使用Sklearn进行培训测试分割是机器学习中很常见的一步操作,可有效地检验模型的预测能力和泛化能力。下面是使用Sklearn进行培训测试分割的完整攻略:
一、导入相关库和数据集
首先,需要导入需要的库,例如pandas、numpy 和 sklearn 中的模型和模型的工具包。在这个例子中,我们选取的是Iris花的数据集,从Sklearn中导入。
import pandas as pd
import numpy as np
import sklearn
from sklearn.datasets import load_iris
iris = load_iris()
二、理解数据集
在进行数据分析时,先查看数据的大小、类型,确保数据与需要的一致。如下,查看数据集的大小,其中有150个数据样本,每个样本有4个特征。
print("数据集大小:", iris.data.shape)
三、划分训练集和测试集
接下来,我们使用Sklearn中的train_test_split()函数将数据集分成训练集和测试集。通过设置test_size参数,可以将数据集分成两个部分,这里我将数据集以 7:3 的比例拆分,拆分后将有105个样本供训练,45个样本供测试。
from sklearn.model_selection import train_test_split
Xtrain, Xtest, Ytrain, Ytest = train_test_split(
iris.data, iris.target, test_size = 0.3)
print("训练集大小:", Xtrain.shape)
print("测试集大小:", Xtest.shape)
四、模型训练和测试
现在,我们已经有了划分好的训练集和测试集,对数据进行分类,对比真实值与预测值之间的差别,了解模型的表现。
在进行模型训练与预测之前,我们需要选用一个分类器,这里我们选择KNN作为分类器,使用fit()函数对训练集进行拟合,再使用predict()函数对测试集进行预测,然后将测试结果和真实结果进行对比,最后输出分类器的精确度。
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=3)
model.fit(Xtrain, Ytrain)
Ypred = model.predict(Xtest)
from sklearn.metrics import accuracy_score
print("预测准确率:", accuracy_score(Ypred, Ytest))
两个例子分别针对分类和回归问题。
五、分类问题示例
在下面的例子中,我们使用Sklearn带有的digits数字数据集,它是一个10分类问题。
from sklearn.datasets import load_digits
# 获得数据 X 和 y
digits = load_digits()
X = digits.data
Y = digits.target
# 划分训练集和测试集
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size=0.3)
# 设置分类器
model = KNeighborsClassifier(n_neighbors=5)
# 拟合训练集
model.fit(Xtrain, Ytrain)
# 对测试集进行预测
Ypred = model.predict(Xtest)
# 计算模型准确率
acc = accuracy_score(Ytest, Ypred)
print("模型预测准确率为:{:.2f}%".format(acc * 100))
六、回归问题示例
在下面的例子中,我们使用 Sklearn 带有的波士顿房价数据集,它是个回归任务。
from sklearn.datasets import load_boston
# 获得数据 X 和 y
boston = load_boston()
X = boston.data
Y = boston.target
# 划分训练集和测试集
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size=0.3)
# 设置回归器
from sklearn.linear_model import LinearRegression
model = LinearRegression()
# 拟合训练集
model.fit(Xtrain, Ytrain)
# 对测试集进行预测
Ypred = model.predict(Xtest)
# 计算模型误差
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(Ytest, Ypred)
print("模型预测误差为:{:.2f}".format(mse))
以上这些就是使用Sklearn进行培训测试分割的完整攻略,包含了数据预处理,数据划分,模型训练及结果评估。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中使用Sklearn进行培训测试分割 - Python技术站