import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from IPython.display import Image
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.rcParams['figure.figsize'] = (10, 6) # 设置输出图片大小
载入我们提供清洗之后的数据(clear_data.csv),大家也将原始数据载入(train.csv),说说他们有什么不同
data = pd.read_csv('clear_data.csv')
train = pd.read_csv('train.csv')
data.shape, train.shape
data.head(5)
train.head(5)
任务一:切割训练集和测试集
x = data
y = train['Survived']
from sklearn.model_selection import train_test_split
train_test_split?
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.33, stratify = y, random_state = 42)
x_train.shape, x_test.shape
295/891
x_train.head()
任务二:模型创建
创建基于线性模型的分类模型(逻辑回归) 创建基于树的分类模型(决策树、随机森林) 分别使用这些模型进行训练,分别的到训练集和测试集的得分 查看模型的参数,并更改参数值,观察模型变化
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
train['Survived'].value_counts()
lr = LogisticRegression().fit(x_train, y_train)
lr.score(x_train, y_train)
print('训练集得分{:.3f}'.format(lr.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(lr.score(x_test, y_test)))
lr1 = LogisticRegression(C=0.01).fit(x_train, y_train)
lr1.score(x_train, y_train)
print('训练集得分{:.3f}'.format(lr1.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(lr1.score(x_test, y_test)))
lr2 = LogisticRegression(class_weight='balanced').fit(x_train, y_train)
lr2.score(x_train, y_train)
print('训练集得分{:.3f}'.format(lr2.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(lr2.score(x_test, y_test)))
rf = RandomForestClassifier(n_estimators=1000).fit(x_train, y_train)
rf.score(x_train, y_train)
print('训练集得分{:.3f}'.format(rf.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(rf.score(x_test, y_test)))
rf2 = RandomForestClassifier(max_depth=5).fit(x_train, y_train)
rf2.score(x_train, y_train)
print('训练集得分{:.3f}'.format(rf2.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(rf2.score(x_test, y_test)))
rf3 = RandomForestClassifier(bootstrap=False).fit(x_train, y_train)
rf3.score(x_train, y_train)
print('训练集得分{:.3f}'.format(rf3.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(rf3.score(x_test, y_test)))
rf4 = RandomForestClassifier(oob_score=True).fit(x_train, y_train)
rf4.score(x_train, y_train)
print('训练集得分{:.3f}'.format(rf4.score(x_train, y_train)))
print('测试集得分{:.3f}'.format(rf4.score(x_test, y_test)))
lr.predict(x_train)
lr.predict_proba(x_train)



