一、sklearn数据集与估计器
1.sklearn数据集
1.数据集划分
一般划分两部分
训练集:用于训练,构建模型 (70%,75%,80%)
测试集:在模型检验时使用,用于评估模型是否有效 (30%,25%,20%)
一般划分75%,25%比较好
API
sklearn.model_selection.train_test_split
- sklearn.datasets
加载获取流行数据集
- datasets.load_*()
获取小规模数据集,数据包含在datasets里 - datasets.fetch_*(data_home=None)
获取大规模数据集,需要从网络上下载,函数第一个参数是data_home,表示数据集下载的目录,默认是~/scikit_learn_data/
获取数据集返回的类型
load和fetch返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是[n_samples*n_features]的二维numpy.ndarray数据
- target:标签数组,是n_samples的一维numpy.ndarray数组
- DESCR:数据描述
- feature_names:特征名, 新闻数据、手写数字、回归数据集没有
- target_names:标签名
from sklearn.datasets import load_iris
iris = load_iris()
print("获取特征值",iris.data)
print("获取目标值",iris.target)
print(iris.DESCR)
2.sklearn数据集的接口介绍
数据集进行分割
**sklearn.model_selection.train_test_split(*arrays,options)
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return 训练集特征值,测试集特征值,训练标签,测试标签(默认随机取)
示例:划分训练集与测试集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=0,test_size=0.25)
3.sklearn分类数据集
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
- subset:‘train’或者‘test’,‘all’,可选,选择要加载的数据集,训练集的‘训练’,测试集的‘测试’,两者的‘全部’
- dataset.clear_data_home(data_home=None)
清除目录下的数据
4.sklearn回归数据集
sklearn.datasets.load_boston()
加载并返回波士顿房价数据集
sklearn.datasets_load_diabetes()
加载并返回糖尿病数据集
5.转换器与估计器
转换器类(transformer)
-
fit():输入数据 (类似建立公式f(x),不同的数据调用fit(),会得到不同的公式)
-
transform(): 进行数据的转换 (类似运算)
-
fit_transform():输入数据直接转换
sklear机器学习算法的实现-估计器(estimator)
在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API
1.用于分类的估计器:
- sklean.neighbors k-近邻算法
- sklearn.naive_bayes 贝叶斯
- sklearn.linear_model.logistcRegression 逻辑回归
- sklearn.tree 决策树
2.用于回归的估计器
- sklearn.linear_model.LinearRegression 线性回归
- sklearn.linear_model.Ridge 岭回归
1.y_predict= predict(x_test)
2.预测的准确率:score(x_test,y_test)
二、分类算法-K近邻算法(几乎不用)
定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
欧式距离公式:
( a 1 + b 1 ) 2 + ( a 2 + b 2 ) 2 + ( a 3 + b 3 ) 2 \sqrt {(a_1+b_1)^2+(a_2+b_2)^2+(a_3+b_3)^2} (a1+b1)2+(a2+b2)2+(a3+b3)2
k-近邻算法需要做标准化处理
sklearn k-近邻算法API
sklearn.neighbors.KNeighborsClass