kaggle 요약
kaggle 요약
python
ML
1. 특징 분석(EDA, 탐색적 데이터 분석)
1.1 seaborn 특징 분석
roc_cure lineplot("X", "y", data=df))
하나의 특징이 다른 값이 생존에 미치는 영향, 유한 개수:barplot("X", "y",data=df)
연속적이고 개수가 비교적 많다.distplot(train['SibSp'][train['Survived'] == 1], bins=50) sns.distplot(train['SibSp'][train['Survived']===0],bins=50)는 sns와 같다.distplot(train.loc[ train['Survived'] == 1, 'SibSp'], bins=50) sns.distplot(train.loc[ train['Survived'] == 0, 'SibSp'], bins=50)
하나의 값이 각각 생사에 미치는 영향countplot("Embarked",hue='Survived', 데이터=df)
1.2 특징 개요
data.head(10) data.describe() data.describe().Tdata.info() train['Survived'].value_counts()#생존 비중 보기
2. 특징 선택, 처리
2.1 연속값 분리 처리
1.1 seaborn 특징 분석
roc_cure lineplot("X", "y", data=df))
하나의 특징이 다른 값이 생존에 미치는 영향, 유한 개수:barplot("X", "y",data=df)
연속적이고 개수가 비교적 많다.distplot(train['SibSp'][train['Survived'] == 1], bins=50) sns.distplot(train['SibSp'][train['Survived']===0],bins=50)는 sns와 같다.distplot(train.loc[ train['Survived'] == 1, 'SibSp'], bins=50) sns.distplot(train.loc[ train['Survived'] == 0, 'SibSp'], bins=50)
하나의 값이 각각 생사에 미치는 영향countplot("Embarked",hue='Survived', 데이터=df)
1.2 특징 개요
data.head(10) data.describe() data.describe().Tdata.info() train['Survived'].value_counts()#생존 비중 보기
2. 특징 선택, 처리
2.1 연속값 분리 처리
2.2 문자열 처리
train['Embarked'] = train['Embarked'].map({'S': 0, 'P':1, 'S': 2})
2.3 부족한 값 처리
문자열 채우기:
train['Embarked'] = train['Embarked'].fillna('S')
균일치를 사용하여 채우기
avg = train['Age'].mean()
std = train['Age'].std()
age_null_count = train['Age'].isnull().sum()
age_list = np.random.randint(avg-std, avg+std, size = age_null_count)
train.loc[train['Age'].isnull(), 'Age'] = age_list
, :
from sklearn.ensemble import RandomForestRegressor
import lightgbm as lgbm
data = train[['Age', 'Pclass', 'Sex', 'Title']]
data = pd.get_dummies(data)
model = RandomForestRegressor(n_estimators=128, n_jobs=-1)
# model = lgbm.LGBMRegressor(n_estimators=128, n_jobs=-1)
tr= data[data['Age'].notnull()].values
te = data[data['Age'].isnull()].values
tr_X = tr[:, 1:]
tr_y = tr[:, 0]
te_X = te[:, 1:]
model.fit(tr_X, tr_y)
pred_age = model.predict(te_X)
train.loc[data['Age'].isnull(), 'Age'] = pre_age
2.4 one hot 인코딩
꼭 all데이터가 실행됩니다. 그렇지 않으면 트레이닝 집합이 쉽고 테스트 집합이 일치하지 않습니다.
all_data = pd.get_dummise(all_data)
Emb = pd.get_dummies(all_data)
all_data = pd.concat([all_data, Emb], axis = 1)
2.5 데이터 병합 분리
all_data = pd.concat([train, test], ignore_index = True)
분리:
train=all_data.loc[all_data['Survived'].notnull()]
test=all_data.loc[all_data['Survived'].isnull()]
2.6 피쳐 배율, 표준화
from sklearn.preprocessing import StandardScaler
sc =StandardScaler()
data_new[['Amount', 'Hour']] =sc.fit_transform(data_new[['Amount', 'Hour']])
data_new.head()
3. 모형 조정
lgbm: objective=(regression,binary/multiclass)
3.1 GridSearchCV 매개 변수 선정
import lightgbm as lgb
from sklearn.model_selection import cross_val_score
from sklearn.model_selection improt GridSearchCV
params = {'num_leaves': [32, 64, 128, 256, 1024], 'max_depth': [10, 20, 30, 60], 'learning_rate': [0.01, 0.05, 0.1], 'n_estimators': [100, 200, 300]}
model = lgb.LGBMClassifier()
gridS = GridSearchCV(model, params, cv=5, n_jobs=-1)
gridS.fit(X, y)
gridS.best_estimator_
결과
4.1 roc 곡선 그리기
가장 좋은 확률이 필요합니다. 0, 1값이면 점이 하나밖에 없기 때문에 lgb를 사용해야 합니다.train() - LGBMClassifier()의 모델이 아님from sklearn.metrics import roc_curve
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()
fpr, tpr, thresh = roc_curve(y, pred)
plt.plot(fpr, tpr)
plt.show()
4.2 교차 정확도 구하기
from sklearn.model_selection import cross_val_score
score = cross_val_score(model, X, y, scoring='accuracy', cv=5)
print(np.mean(score))
4.3 csv 저장
res = pd.DataFrame({'PassageID': passage_id, 'Survived': pred.as_type(np.int32)})
res.to_csv('pred.csv', index=False)
Others
모델 트레이닝 타임즈 Input contains NaN, infinity or a value too large for dtype('float64'): 피쳐에 nan이 포함되어 있기 때문입니다.
관련 함수:np.isnan
train.info()
train['Age'].isnull()
train['Age'].notnull()
전재 대상:https://www.cnblogs.com/gr-nick/p/11125777.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
objective=(regression,binary/multiclass)
import lightgbm as lgb
from sklearn.model_selection import cross_val_score
from sklearn.model_selection improt GridSearchCV
params = {'num_leaves': [32, 64, 128, 256, 1024], 'max_depth': [10, 20, 30, 60], 'learning_rate': [0.01, 0.05, 0.1], 'n_estimators': [100, 200, 300]}
model = lgb.LGBMClassifier()
gridS = GridSearchCV(model, params, cv=5, n_jobs=-1)
gridS.fit(X, y)
gridS.best_estimator_
4.1 roc 곡선 그리기
가장 좋은 확률이 필요합니다. 0, 1값이면 점이 하나밖에 없기 때문에 lgb를 사용해야 합니다.train() - LGBMClassifier()의 모델이 아님
from sklearn.metrics import roc_curve
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()
fpr, tpr, thresh = roc_curve(y, pred)
plt.plot(fpr, tpr)
plt.show()
4.2 교차 정확도 구하기
from sklearn.model_selection import cross_val_score
score = cross_val_score(model, X, y, scoring='accuracy', cv=5)
print(np.mean(score))
4.3 csv 저장
res = pd.DataFrame({'PassageID': passage_id, 'Survived': pred.as_type(np.int32)})
res.to_csv('pred.csv', index=False)
Others
모델 트레이닝 타임즈 Input contains NaN, infinity or a value too large for dtype('float64'): 피쳐에 nan이 포함되어 있기 때문입니다.
관련 함수:np.isnan
train.info()
train['Age'].isnull()
train['Age'].notnull()
전재 대상:https://www.cnblogs.com/gr-nick/p/11125777.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
np.isnan
train.info()
train['Age'].isnull()
train['Age'].notnull()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.