sklearn之train_test_split()解析

train_test_split()是sklearn.cross_validation模块中用来随机划分训练集和测试集,以Iris数据集为例。

有以下四个特征

  • sepal length in cm
  • sepal width in cm
  • petal length in cm
  • petal width in cm

分为3个类别:

  • Iris Setosa
  • Iris Versicolour
  • Iris Virginica
mport pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None) # 加载Iris数据集作为DataFrame对象
X = df.iloc[:, [0, 2]].values # 取出2个特征,并把它们用Numpy数组表示

plt.scatter(X[:50, 0], X[:50, 1],color='red', marker='o', label='setosa') # 前50个样本的散点图
plt.scatter(X[50:100, 0], X[50:100, 1],color='blue', marker='x', label='versicolor') # 中间50个样本的散点图
plt.scatter(X[100:, 0], X[100:, 1],color='green', marker='+', label='Virginica') # 后50个样本的散点图
plt.xlabel('petal length')
plt.ylabel('sepal length')
plt.legend(loc=2) # 说明放在左上角
plt.show()

在这里插入图片描述
train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取train data和test data,形式为:
X_train,X_test, y_train, y_test = cross_validation.train_test_split(train_data,train_target,test_size=0.4, random_state=0)

参数代表含义:
train_data:所要划分的样本特征集
train_target:所要划分的样本结果
test_size:样本占比,如果是整数的话就是样本的数量
random_state:是随机数的种子。

from sklearn import datasets
import numpy as np
from sklearn.cross_validation import train_test_split

iris = datasets.load_iris() # 加载Iris数据集。
X = iris.data[:, [2, 3]]
y = iris.target # 标签已经转换成0,1,2了
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) # 为了看模型在没有见过数据集上的表现,随机拿出数据集中30%的部分做测试

# 为了追求机器学习和最优化算法的最佳性能,我们将特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train) # 估算每个特征的平均值和标准差
sc.mean_ # 查看特征的平均值,由于Iris我们只用了两个特征,结果是array([ 3.82857143,  1.22666667])
sc.scale_ # 查看特征的标准差,结果是array([ 1.79595918,  0.77769705])
X_train_std = sc.transform(X_train)
# 注意:这里我们要用同样的参数来标准化测试集,使得测试集和训练集之间有可比性
X_test_std = sc.transform(X_test)

# 训练感知机模型
from sklearn.linear_model import Perceptron
# n_iter:可以理解成梯度下降中迭代的次数
# eta0:可以理解成梯度下降中的学习率
# random_state:设置随机种子的,为了每次迭代都有相同的训练集顺序
ppn = Perceptron(n_iter=40, eta0=0.1, random_state=0)
ppn.fit(X_train_std, y_train)

# 分类测试集,这将返回一个测试结果的数组
y_pred = ppn.predict(X_test_std)
# 计算模型在测试集上的准确性
accuracy_score(y_test, y_pred)



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
train_test_split()函数是机器学习中用于分割数据集(训练集和测试集)的函数。它可以将数据集随机分成训练集和测试集两部分,以便我们可以使用训练集来训练模型,使用测试集来评估模型的性能。train_test_split()函数的参数包括X、y、test_size、train_size、random_state、shuffle和stratify等。其中,X和y是数据集的特征和标签,test_size和train_size是测试集和训练集的大小,random_state是随机数种子,shuffle是是否打乱数据集,stratify是按照标签进行分层抽样。train_test_split()函数的返回值包括X_train、X_test、y_train和y_test四个部分,分别表示训练集的特征、测试集的特征、训练集的标签和测试集的标签。下面是一个train_test_split()函数的例子: ```python from sklearn.model_selection import train_test_split X = [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]] y = [0, 1, 2, 3, 4] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0) print(X_train) print(X_test) print(y_train) print(y_test) ``` 这个例子中,我们将一个包含5个样本的数据集X和对应的标签y分成了训练集和测试集两部分,其中测试集的大小为40%。运行上述代码,我们可以得到以下输出: ``` [[4, 5], [0, 1], [6, 7]] [[2, 3], [8, 9]] [2, 0, 3] [1, 4] ``` 这里,X_train、X_test、y_train和y_test分别表示训练集的特征、测试集的特征、训练集的标签和测试集的标签。我们可以使用这些数据来训练和评估模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值