python sklearn 机器学习 train_test_split 划分训练集测试集 鸢尾数据实例

目录

获取数据

划分训练集和测试集

完整代码脚手架


python机器学习中常用 train_test_split()函数划分训练集和测试集,其用法语法如下:

X_train, X_test, y_train, y_test = train_test_split(train_data, train_target, test_size, random_state, shuffle)

变量描述
X_train划分的训练集数据
X_test划分的测试集数据
y_train划分的训练集标签
y_test划分的测试集标签
参数描述
train_data还未划分的数据集
train_target还未划分的标签
test_size分割比例,默认为0.25,即测试集占完整数据集的比例
random_state随机数种子,应用于分割前对数据的洗牌。可以是int,RandomState实例或None,默认值=None。设成定值意味着,对于同一个数据集,只有第一次运行是随机的,随后多次分割只要rondom_state相同,则划分结果也相同。
shuffle是否在分割前对完整数据进行洗牌(打乱),默认为True,打乱

以sklearn库内置的iris数据集(鸢尾数据集)为例,首先获取数据:

获取数据

from sklearn.model_selection import train_test_split
# 以sklearn库内置的iris数据集(鸢尾数据集)为例
dataset = load_iris()

这里的dataset数据是sklearn.utils.Bunch类型的数据,比较像字典

将其打印出~

print(dataset)

如下所示
在这里插入图片描述
从中取出其data属性和target属性,X是特征数组(也称数据集),y表示类别数组(也称标签)

X = dataset.data
y = dataset.target

此例中,有四个特征(即data的4列表示4个特征),分别是鸢尾植物的萼片的长,萼片的宽,花瓣的长,花瓣的宽。
X中共150行,即150个样本,类别数据总共有150个数据(对应150个样本的类别)。

print(y)

在这里插入图片描述

y的150个数据如上图,其中,有0,1,2三个取值,表示三种花:

012
Iris Setosa(山鸢尾)Iris Versicolour(变色鸢尾)Iris Virginica(维吉尼亚鸢尾)

使用最简单的离散化算法,以均值为阈值,使大于阈值的特征值为1,小于阈值的特征值为0.

attribute_means = X.mean(axis=0) 
X_d = np.array(X >= attribute_means, dtype='int')  # bool转换
print(X_d) 

运行结果(成功将X的数据转换为bool类型):
在这里插入图片描述

划分训练集和测试集

然后就是使用train_test_split()函数将数据划分训练集和测试集了。

random_state = 10
# 以默认的0.25作为分割比例进行分割(训练集:测试集=3:1)
X_train, X_test, y_train, y_test = train_test_split(X_d, y, random_state=random_state)
print("There are {} training samples".format(y_train.shape[0]))
print("There are {} testing samples".format(y_test.shape[0]))

在这里插入图片描述

如图得到的数据中112/38接近3:1。分割成功!


完整代码脚手架

(将上述分步的代码写在一块儿方便复制使用):

from sklearn.model_selection import train_test_split
dataset = load_iris()

X = dataset.data
y = dataset.target

attribute_means = X.mean(axis=0) 
X_d = np.array(X >= attribute_means, dtype='int')

random_state = 10
X_train, X_test, y_train, y_test = train_test_split(X_d, y, random_state=random_state)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是机器学习鸢尾数据集knn算法的源代码: ``` import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 加载鸢尾数据集 iris = load_iris() X = iris.data y = iris.target # 将数据集分为训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) # 训练模型 knn.fit(X_train, y_train) # 预测测试集结果 y_pred = knn.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ``` 该代码使用了sklearn库中的KNeighborsClassifier类来创建KNN分类器,并使用鸢尾数据集进行训练和测试。最后计算出了模型的准确率。 ### 回答2: 机器学习鸢尾数据集是一个经典的数据集,包含了150个样本,每个样本有4个特征,分为3个类别。对于这个数据集,可以使用knn(K-Nearest Neighbors)算法进行分类。下面是KNN算法在Python中的实现: 首先,我们需要导入所需的库:numpy和sklearn ```python import numpy as np from sklearn import datasets from sklearn.neighbors import KNeighborsClassifier ``` 然后,我们需要加载数据集: ```python iris = datasets.load_iris() X = iris.data y = iris.target ``` 接下来,我们将数据集划分训练集测试集: ```python # 划分训练集测试集 indices = np.random.permutation(len(X)) X_train = X[indices[:-30]] y_train = y[indices[:-30]] X_test = X[indices[-30:]] y_test = y[indices[-30:]] ``` 然后,我们可以使用sklearn库中的KNeighborsClassifier类来建立模型: ```python # 创建一个knn分类器实例,k=3 knn = KNeighborsClassifier(n_neighbors=3) # 用训练集训练模型 knn.fit(X_train, y_train) # 对测试集进行预测 y_pred = knn.predict(X_test) ``` 最后,我们可以使用sklearn库中的metrics类来评估模型: ```python # 评估模型,输出准确率 from sklearn import metrics print(metrics.accuracy_score(y_test, y_pred)) ``` 完整的源代码如下: ```python import numpy as np from sklearn import datasets from sklearn.neighbors import KNeighborsClassifier from sklearn import metrics iris = datasets.load_iris() X = iris.data y = iris.target # 划分训练集测试集 indices = np.random.permutation(len(X)) X_train = X[indices[:-30]] y_train = y[indices[:-30]] X_test = X[indices[-30:]] y_test = y[indices[-30:]] # 创建一个knn分类器实例,k=3 knn = KNeighborsClassifier(n_neighbors=3) # 用训练集训练模型 knn.fit(X_train, y_train) # 对测试集进行预测 y_pred = knn.predict(X_test) # 评估模型,输出准确率 print(metrics.accuracy_score(y_test, y_pred)) ``` 以上便是KNN算法在Python中使用鸢尾数据集进行分类的源代码实现。 ### 回答3: 鸢尾数据集机器学习中比较经典的数据集之一,数据集包含了三种不同种类的鸢尾花,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。在对这个数据集进行机器学习分类,通常使用k近邻算法(k-nearest neighbors,简称knn)。 KNN算法的原理是通过计算相邻点之间的距离来确定未知数据的类别。KNN算法是一种有监督的学习方法,它需要训练数据集和已知数据类别,然后通过对新样本与已知样本的距离进行计算,确定样本属于哪一个类别。 下面是使用pythonsklearn库实现KNN算法对鸢尾数据集进行分类的原始代码: ``` python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 加载鸢尾数据集 iris = load_iris() # 将数据集分成测试集和验证集 X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, test_size=0.3, random_state=42) # 定义KNN分类器,设置K值为3 knn = KNeighborsClassifier(n_neighbors=3) # 训练KNN分类器 knn.fit(X_train, y_train) # 预测测试集的类别 y_pred = knn.predict(X_test) # 计算分类器的准确率 accuracy = accuracy_score(y_test, y_pred) print("模型的准确率为:", accuracy) ``` 这段代码首先使用sklearn库中的load_iris函数加载鸢尾数据集,然后使用train_test_split函数将数据集分成训练集测试集。接着定义KNN分类器,并使用fit方法将训练集数据喂入分类器进行训练。最后使用predict方法预测测试集的类别,并使用accuracy_score方法计算分类器的准确率。输出结果为模型的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值