(서강)코쉬코쉬 part2
내 스터디
- 스터디에 참여해보세요!
이종욱 리더
데이터사이언스 12시간 입문기
온라인
import pandas as pd
df=pd.read_csv('data/review.csv')
review_data= df.drop(['이름', '성별'], axis=1)
x_train=df[['나이', '학점', '키']]
y_train = df['토익점수']
from sklearn.linear_model import LinearRegression
lr = LinearRegression().fit(x_train, y_train)
print('train set accuracy', lr.score(x_train, y_train))
df_test = pd.read_csv('data/review_test.csv')
x_test = df_test[['나이', '학점', '키']]
prediction = lr.predict(x_test)
prediction
lr.predict([(24,3.7,170)])
comparison = pd.DataFrame(y_train)
y_test = lr.predict(x_train)
comparison['나의 예측']=y_test
comparison
import pandas as pd
df=pd.read_csv('train.csv')
df_test=pd.read_csv('test.csv')
#<자율과제1>
#step 1
C='Cabin'
df[C]=df[C].str[0]
df[C]=df[C].fillna('non')
df_test[C]=df_test[C].str[0]
df_test[C]=df_test[C].fillna('non')
df_test.isnull().sum()
# df[["PassengerId",C]]
#step2
df[C].value_counts()
df.loc[df[C]=='C',C]=0
df.loc[df[C]=='B',C]=1
df.loc[df[C]=='D',C]=2
df.loc[df[C]=='E',C]=3
df.loc[df[C]=='A',C]=4
df.loc[df[C]=='F',C]=5
df.loc[df[C]=='G',C]=6
df.loc[df[C]=='T',C]=7
df_test.loc[df_test[C]=='C',C]=0
df_test.loc[df_test[C]=='B',C]=1
df_test.loc[df_test[C]=='D',C]=2
df_test.loc[df_test[C]=='E',C]=3
df_test.loc[df_test[C]=='A',C]=4
df_test.loc[df_test[C]=='F',C]=5
df_test.loc[df_test[C]=='G',C]=6
df_test.loc[df_test[C]=='T',C]=7
df_test[C].value_counts()
3주차 레벨업 과제
#이름 특징 추출하기, 이름으로 나이 평균 내기(빈칸을 더 현명하게 처리)
import pandas as pd
df=pd.read_csv('data/train.csv')
df_test=pd.read_csv('data/test.csv')
df.loc[df['Name'].str.contains('Mr\.'),'Name']='Mr'
df.loc[df['Name'].str.contains('Mrs\.'),'Name']='Mrs'
df.loc[df['Name'].str.contains('Miss\.'),'Name']='Miss'
df['Name']=df['Name'].map({
'Mr': int(0),
'Mrs': int(1),
'Miss': int(2)
})
df['Name']=df['Name'].fillna(int(3))
df['Name'].value_counts()
# 평균내기
df['Age']=df['Age'].fillna(df.groupby('Name')['Age'].transform('mean'))
#여러 특성을 지닌 데이터의 Decision Tree
data = {
'weight': [28, 2, 9, 6],
'movable': [True, True, True, False],
'category': ['animal', 'plant', 'animal', 'plant']
}
target_index=3
target_names=['1번','2번','3번','4번']
print(target_names[target_index],": 동/식물을 분류합니다.")
if (data['movable'][target_index]): #움직인다
if (data['weight'][target_index]<=6):
print('plant')
else:
print('animal')
else: #움직이지 못한다.
print('plant')
#다른 트리 만들기
if data['weight'][target_index]<=6:
print("plant")
else:
print("animal")
#Cabin의 객실 특징 추출, 숫자 변환
df['Cabin']=df['Cabin'].str[0]
df['Cabin']=df['Cabin'].fillna('C')
df['Cabin']=df['Cabin'].map({
'C':0,
'B':1,
'D':2,
'E':3,
'A':4,
'F':5,
'G':6,
'T':7,
})
df['Cabin'].value_counts()
문제 1
data = {
'weight': [28, 2, 9, 6],
'movable': [True, True, True, False ],
'category': ['animal', 'plant', 'animal', 'plant']
}
target_index = 2
target_names = ['1번생물', '2번 생물', '3번 생물', '4번 생물']
print(target_names[target_index], ': 동물/식물을 분류합니다.')
if data['movable'][target_index]:
if data['weight'][target_index] <= 6:
print('plant')
else:
print('animal')
else:
print('plant')
문제 2
target_index = 2
target_names = ['1번생물', '2번 생물', '3번 생물', '4번 생물']
print(target_names[target_index], ': 동물/식물을 분류합니다.')
if data['weight'][target_index]>=6:
if data['movable'][target_index] == 'no':
print('plant')
else:
print('animal')
else:
print('plant')
*** 연령대별 생존자/사망자 수 확인 및 차트 도출하기.
1) 1단계 train 파일에 Age 항목은 중구난방으로 정리되어있기 때문에, 10년 단위로 재정리한다. 0세~9세: 0 / 10세~19세: 1 / 20세~29세: 2 / 30세~39세: 3/ 40세~49세:4/ 50세~ : 5 아래와 같은 결과를 도출한다.
2) 2단계 연령대별로 생존자 및 사망자수를 수집한다.
제시된 표를 기반으로, Age = 0 & 사망자의 수는 24명이다. Age = 0 & 생존자의 수는 38명이다. Age = 3 & 사망자의 수는 94명이다. Age = 5 & 생존자의 수는 27명이다. 3열에 있는 숫자는 각 행의 사망자와 생존자를 더한 값이다.
3) 3단계
X축은 ‘Survived’, y축은 인원수로 하는 차트를 도출한다.
생존자 및 사망자의 상세 구분은 Age로 한다.