1 数据集的划分
训练集:用于训练,构建模型。
测试集:在模型检验时使用,用于评估模型是否有效。
训练集(建立模型) | 测试集(评估模型) |
80% | 20% |
70% | 30% |
75% | 25% |
2 scikit -learn数据集API介绍
2.1 sklearn.datasets 加载获取流行数据集
- datasets.load_*() 获取小规模数据集,数据包含在datasets里
- datasets.fetch_*(data_home=None) 获取大规模数据集,需要从网络上下载,data_home表示数据集的下载目录
2.2 获取数据集返回的类型
data | 特征数据数组 |
target | 标签数据 |
DESCR | 数据描述 |
feature_names | 特征名 |
target_names | 标签名 |
以鸢尾花数据为例子
from sklearn.datasets import load_iris,fetch_20newsgroups
from sklearn.model_selection import train_test_split
li=load_iris()
print("获取特征值")
print(li.data)#每一个样本四个特征值
print("目标值")
print(li.target)
print(li.DESCR)
获取特征值
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
目标值
[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]
数据描述
Min Max Mean SD Class Correlation
============== ==== ==== ======= ===== ====================
sepal length: 4.3 7.9 5.84 0.83 0.7826
sepal width: 2.0 4.4 3.05 0.43 -0.4194
petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)
petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)
============== ==== ==== ======= ===== ====================
2.3 数据集进行分割
-
sklearn.model_selection.train_test_split(*arrays,**options)
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return 训练集特征值,测试集特征值,训练标签,测试标签
#注意返回值,训练集 train :x_train,y_train,测试集 test: x_test,y_test
x_train,x_test,y_train,y_test=train_test_split(li.data,li.target,test_size=0.25)
print("训练集特征值和目标值",x_train,y_train)
print("测试集特征值和目标值",x_test,y_test)
训练集特征值和目标值 [[6.7 2.5 5.8 1.8]
[4.9 2.4 3.3 1. ]
[7.9 3.8 6.4 2. ]
[5.4 3.9 1.7 0.4]
[5.9 3.2 4.8 1.8]
[6.4 3.2 4.5 1.5][2 1 2 0 1 1 1 0 2 1 0 2 0 1 2 1 1 2 0 0 2 0 2 0 1 0 2 0 2 0 0 0 2 1 2 2 1
0 2 1 1 2 0 1 0 2 0 1 2 1 0 0 2 2 2 2 0 0 0 2 0 0 0 2 2 2 1 1 0 2 2 1 1 2
1 2 1 0 0 1 2 1 1 1 2 1 0 1 1 1 0 1 0 2 0 1 0 1 0 0 2 2 2 0 0 1 1 2 0 1 2
0]
测试集特征值和目标值 [[6.7 3.1 5.6 2.4]
[6.2 3.4 5.4 2.3]
[4.8 3.1 1.6 0.2]
[4.4 2.9 1.4 0.2]
[7.2 3.2 6. 1.8][2 2 0 0 2 2 2 1 0 0 0 2 1 1 1 2 1 1 1 0 0 0 2 1 0 0 2 0 1 1 2 2 1 1 2 1 1
2]
2.4 用于分类的大数据集(文本分类)
- sklearn.datasets.fetch_20newsgroups(data_home=None,subset="train")
- sunset:"train"或者"test","all"可选,选择要加载的数据集
- datasets.clear_data_home (data_home=None) 清除目录下的数据
news=fetch_20newsgroups(subset="all")
2.5 sklearn回归数据集
-
sklearn.datasets.load_boston() 加载并返回波士顿房价数据集
名称 | 数量 |
目标类别 | 5-50 |
特征 | 13 |
样本数量 | 506 |
-
sklearn.datasets.load_diabetes() 加载和返回糖尿病数据集
名称 | 数量 |
目标范围 | 25-346 |
特征 | 10 |
样本数量 | 442 |
3 转化器(transformer 实现了特征工程的API)
3.1 standardScaler()函数
sklearn包下的,所以每次使用要调用sklearn包。
StandardScaler类是处理数据归一化和标准化。
3.2 fit_transform()函数
- fit_transform():输入数据直接转换。fit_transform=先fit+再transform
- fit():输入数据,但不做事情。Method calculates the parameters μ and σ and saves them as internal objects.解释:简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。
- transform():进行数据的转换。 Method using these calculated parameters apply the transformation to a particular dataset.
解释:在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。rom sklearn.preprocessing import StandardScaler s=StandardScaler() t1=s.fit_transform([[1,2,3],[4,5,6]]) print(t1) ss=StandardScaler() t2=ss.fit([[1,2,3],[4,5,6]]) print(t2) sss=StandardScaler() t3=sss.transform([[1,2,3],[4,5,6]]) print(t3)
[[-1. -1. -1.]
[ 1. 1. 1.]]
4 估计器(estimator 实现了算法的API)
4.1 用于分类的估计器
- sklearn.neighbors k-近邻算法
- sklearn.naive_bayes 贝叶斯
- sklearn.liner_model.LogisticRegression 逻辑回归
- sklearn.tree 决策树和随机森林
4.2 用于回归的估计器
- sklearn.linear_model.LinearRegression 线性回归
- sklearn.linear_model.Ridge 岭回归
5 非监督学习建模步骤
以下总结是我用xmind画出