如何在Python中使用Sklearn进行培训测试分割

  • Post category:Python

使用Scikit-Learn进行机器学习的流程一般可以分为数据转换、模型选择和模型评估三个步骤。其中,培训测试分割是模型选择中不可或缺的一步。下面是使用Sklearn进行培训测试分割的详细攻略。

1. 加载数据集

使用Sklearn进行训练测试分割的第一步是加载数据集。Sklearn提供了一些常见的数据集供使用者练手,例如鸢尾花、波士顿房价等,可以通过调用sklearn.datasets的相关函数进行加载。当然,如果有自己的数据集的话也可以直接读取。

示例1:加载鸢尾花数据集

from sklearn.datasets import load_iris

iris = load_iris()
X, y = iris.data, iris.target

示例2:加载手写数字数据集

from sklearn.datasets import load_digits

digits = load_digits()
X, y = digits.data, digits.target

2. 培训测试分割

在加载数据集之后,接下来需要将数据集分割为培训集和测试集。Sklearn提供了train_test_split函数进行数据分割。其中,test_size参数用于设置测试集占总数据集的比例;random_state参数用于指定伪随机数生成器状态,以便可复现结果。

示例1:分割鸢尾花数据集

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

示例2:分割手写数字数据集

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3. 数据预处理

在分割出培训集和测试集之后,需要对数据进行预处理,例如特征缩放、缺失值处理等。处理方法不同,也会影响模型的表现。在这里就不做详细讲解了。

4. 模型训练

在进行数据预处理之后,就可以开始训练模型了。可以使用Scikit-Learn提供的各种机器学习算法进行建模,例如线性回归、决策树、支持向量机等。不同的算法需要调用不同的函数进行建模。

示例1:使用决策树算法进行建模

from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

示例2:使用支持向量机算法进行建模

from sklearn.svm import SVC

clf = SVC()
clf.fit(X_train, y_train)

5. 模型评估

当模型训练完成之后,需要对模型进行评估。这里需要使用测试集进行评估,评价指标一般包括准确率、精确度、召回率等。

示例1:评估决策树模型

from sklearn.metrics import accuracy_score

y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy score: {accuracy:.2f}")

示例2:评估支持向量机模型

from sklearn.metrics import classification_report

y_pred = clf.predict(X_test)
report = classification_report(y_test, y_pred)
print(report)