机器学习基础

卖小孩的咖啡 2020-07-21

sklearn的数据集

  • 数据集划分
  • 数据集接口介绍

数据集划分

  • 前提:机器学习就是从数据中自动分析获得规律,并利用规律对未知数据进行预测。换句话说,我们的模型一定是要经过样本数据对其进行训练,才可以对未知数据进行预测的。
  • 问题:我们得到数据后,是否将数据全部用来训练模型呢?
    • 当然不是!因为我们如果模型(数据的规律)都是从数据中得来的,那么该模型的性能评估如何进行呢?还是基于对原先的数据进行预测吗?可想不是的,如果模型对原先的数据进行预测,由于模型(数据的规律)本来就是从该数据中获取的,所以预测的精度几乎会是百分之百。所以想要评估模型的好坏,需要使用一组新数据对模型进行评估。
    • 因此我们需要将原先的样本数据拆分成两部分:
      • 训练集:训练模型
      • 测试集:评估模型
        • 不同类型的模型对应的评估方式是不一样的
  • 数据集划分的API
    • from sklearn.model_selection import train_test_split
    • train_test_split(x,y,test_size,random_state)参数介绍:
      • x:特征
      • y:目标
      • test_size:测试集的比例
      • random_state:打乱的随机种子
    • 返回值:训练特征,测试特征,训练目标,测试目标
 

数据集接口介绍

  • sklearn.datasets.load_*():获取小规模的数据集
  • sklearn.datasets.fetch_*(data_home=None,subset):获取大规模的数据集data_home表示数据集下载目录,None为默认值表示的是家目录/scikit_learn_data(自动创建该文件夹)下。需要从网络下载.subset为需要下载的数据集,可以为train,test,all
#方式1:获取小规模的数据集
import sklearn.datasets as datasets
iris = datasets.load_iris()
#提取样本数据
feature = iris[‘data‘]
target = iris[‘target‘]


feature.shape
(150, 4)

target.shape
(150,)

target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])


#切分样本数据
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.2,random_state=2020)


x_train,y_train #训练集数据

x_test,y_test #测试集数据


 
 
#方式2:获取较大规模的数据集
datasets.fetch_20newsgroups(data_home=‘数据集保存路径‘,subset=‘all‘)

相关推荐