机器学习之分类学习(模型训练)

来源:互联网 发布:淘宝动态计算器 编辑:程序博客网 时间:2024/06/07 00:31

完成数据的预处理,接下进入分类学习中的重点–模型训练。在前面我们得到了一批数据,现在我们需要从中提取出一部分数据作为我们训练的数据,当然我们也可以把全部的数据作为我们训练的数据,但是如果我们把全部的数据都拿来作为训练就没有数据来测试我们模型的性能了,因为训练数据和测试数据不能重叠,不然就是作弊了,这样性能测试结果并不能真实的反应模型的性能了。同时在提取训练数据过程中,按照随机的原则,不然也是作弊的行为。一般我们从数据中提取75%作为训练数据,提取25%作为测试数据。

# 使用sklearn.cross_valiation里的train_test_split模块用于分割数据。from sklearn.cross_validation import train_test_split# 随机采样25%的数据用于测试,剩下的75%用于构建训练集合。X_train, X_test, y_train, y_test = train_test_split(data[column_names[1:10]],                                                     data[column_names[10]],                                                     test_size=0.25,                                                     random_state=33)#column_names[1:10]]所要划分的样本的特征集#data[column_names[10]]所要划分的样本的结果#test_size测试样本的占比,如果是整数的话就是测试样本的数量#random_state随机数的种子

在我们得到的数据中,第0列是序号,第1到第9列是样本的特征,第10列是样本的结果。
得到了训练数据,接下来我们就需要建立并训练模型了。在此之前需要一个小小的数据调整–标准化数据,即将数据收缩到同一个范围内,比如说一丈和两米的比较,在计算机中我们输入的是1和2并没有带单位,这样对计算机来说肯定是2更长,但是我们知道是一丈更长,所以我们进行比较时要先将一丈标准化为3.33米,又或者将2米标准化为0.6丈,这个是凭个人习惯。

# 从sklearn.preprocessing里导入StandardScaler。from sklearn.preprocessing import StandardScaler# 标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导。ss = StandardScaler()X_train = ss.fit_transform(X_train)X_test = ss.transform(X_test)

下面利用逻辑回归模型训练数据。

from sklearn.linear_model import LogisticRegressionlr = LogisticRegression()# 调用LogisticRegression中的fit函数/模块用来训练模型参数。lr.fit(X_train, y_train)

最终我们得到了lr这个逻辑回归模型。

原创粉丝点击