训练数据集,测试数据集

判断机器学习算法的性能训练数据集,测试数据集_第1张图片

为了避免算法出现问题,可以将数据分为训练数据和测试数据,然后去判断算法的性能。
下面我们用鸢尾花的数据来详细分析一下。首先用sklearn导入鸢尾花的数据。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target

如果我们直接将鸢尾花的数据分为测试数据和训练数据的话就会产生一个问题,我们看他下图:
训练数据集,测试数据集_第2张图片
通过图片我们可以明显的看出,给出的数据集中的类型都是有规律的,如果我们直接将前百分之二十定为测试数据的话,就会造成测试数据中的类型都是0,会导致训练数据中0很少甚至没有0。所以我们要解决这个问题的话,就需要将这些数据随机分布一下,但是由于X和y是关系的,如果直接随机分布的话,会将关系弄得错乱,因此可以利用下面这个方法:

shuffle_indexes = np.random.permutation(len(X))

上面的这个方法是将数据的索引进行乱序排列,而不会破坏X和y的关系。
然后我们建立训练数据和测试数据就行。

test_ratio = 0.2
test_size = int(len(X) * test_ratio)

test_indexes = shuffle_indexes[:test_size]
train_indexes = shuffle_indexes[test_size:]
X_train = X[train_indexes]
y_train = y[train_indexes]

X_test = X[test_indexes]
y_test = y[test_indexes]

sclearn的封装

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)

你可能感兴趣的:(机器学习,机器学习,sklearn,python)