机器学习实战2-决策树算法( 三 )


作图
plt.figure()plt.scatter(x, y, s= 20, edgecolor = "black", c = "darkorange", label = "data")
不包含噪声的图
包含噪声的图
降维函数ravel()的使用、
实例化模型
regr_1 = DecisionTreeRegressor(max_depth = 2)regr_2 = DecisionTreeRegressor(max_depth = 5)regr_1.fit(x, y)regr_2.fit(x, y)
生成测试集
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]# 用numpy生成的随机数
np.arange(开始点, 结束点, 步长)
增维切片np.
作图
plt.figure() # 告诉python我们要画图了,让他帮我们生成一张画布plt.scatter(x, y, s = 20, edgecolor = "black", c = "darkorange", label = "data")## 画的是我们两个回归模型的结果plt.plot(X_test, y_1, color = "cornflowerblue", label = "max_depth = 2", linewidth=2)plt.plot(X_test, y_2, color = "yellowgreen", label = "max_depth = 5", linewidth=2)## 横坐标的名称plt.xlabel("data")## 纵坐标的名称plt.ylabel("target")# 图的名称plt.title("Decision Tree gression")# 显示图例plt.legend()plt.show()
案例:泰坦尼克号幸存者的预测
导库
import pandas as pdfrom sklearn.tree import DecisionTreeClassifierimport matplotlib as pltfrom sklearn.model_selection import GridSearchCV
读入数据
data = http://www.kingceram.com/post/pd.read_csv(r"C:\Users\cxy\OneDrive\桌面\titanic\train.csv") #加r之后不用将里面面向左的下划线改成向右的
数据如下图
数据来源于坦坦尼克号数据集
观察我们的数据集,我们的标签一般我们习惯上放在最后一列,但是在这个数据集中并不是在最后一列所以这里我们用切片的方式将标签提取出来
我们先来探索数据
data.info()
我们的数据集一共有891行0到890是我们的索引,
我们还可以观察到我们的这些标签中有很多不是数字类型的,有很多类类型,而我们的分类器是不能处理这些数据类型的
我们还可以观察到表中还有很多缺失值,例如年龄这些都是需要我们去处理的
#显示前几行数据,可以有一个参数n,如果不填默认是5,可以有效地帮我查看表的样式data.head()
数据预处理 筛选特征
data.drop(['Cabin', "Name", "Ticket"], inplace = True, axis = 1)
删除名为’Cabin’, “Name”, ""的列,= True这个参数的作用是用新生成的表覆盖原表,axis=1表示对列进行操作
处理缺失值
我们可以看到当我筛选完特征之后数据中依然含有一些特征是有很多的缺失值的,所以这时我们要对这些缺失值进行处理
data['Age'] = data['Age'].fillna(data['Age'].mean())
这里我们对于这种缺失值的处理使用年龄的平均值去进行处理的,这里也给我们的数据添加了一些噪声,对于有些缺失值我们也可以直接用0去填补
可以看到我们填充之后年龄这一属性就没有缺失值了
这里我们再次观察我们的数据集,我们会发现这一属性还是有缺失值,但是缺失值只有几个比较少,我们就直接把那几个缺失值的行给删去即可
data = http://www.kingceram.com/post/data.dropna(axis = 0)