sklearn数据集与估计器
数据集划分
sklearn数据集接口介绍
sklearn分类数据集
名称 | 数量 |
---|---|
类别 | 3 |
特征 | 4 |
样本数量 | 150 |
每个类别数量 | 50 |
名称 | 数量 |
---|---|
类别 | 10 |
特征 | 64 |
样本数量 | 1797 |
sklearn回归数据集
名称 | 数量 |
---|---|
目标类别 | 5~50 |
特征 | 13 |
样本数量 | 506 |
名称 | 数量 |
---|---|
目标范围 | 25~346 |
特征 | 10 |
样本数量 | 442 |
机器学习基础
机器学习开发流程
机器学习算法分类
机器学习模型是什么
需要明确几点问题:
算法是核心,数据和计算是基础
找准定位
大部分复杂模型的算法设计都是工程是在做,而我们要做的是:
我们应该怎么做
数据类型
fit_transform():输入数据直接转换==>fit()+transform()
fit():输入数据,计算平均值,方差等等,但不输出数据
transform():进行数据的转换
sklearn机器学习算法的实现-估计器
在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API
from sklearn.datasets import load_iris
"""
load* 和 fetch* 返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是[n_samples* n_features]的二维numpy.ndarray 数组
target: 标签数组,是n_samples 的一维numpy.ndarray数组
DESCR: 数据描述
feature_names: 特征名:新闻数据,手写数字,回归数据集没有特征名
terget_names: 标签名
"""`在这里插入代码片`
li = load_iris()
print("获取特征值")
print(li.data)
print("目标值")
print(li.target)
print(li.feature_names)
print(li.DESCR)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
"""
sklearn.model_selection.train_test_split(*arrays, **options)
x 数据集的特征值
y 数据集的标签值
test_size 测试集的大小,一般为float
random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同
reutrn 训练集特征值,测试集特征值,训练标签,测试标签
"""
li = load_iris()
#注意返回值,训练集 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("训练集特征值:\n", x_train)
print("训练集目标值:\n", y_train)
print("测试集特征值:\n", x_test)
print("测试集目标值:\n", y_test)
from sklearn.datasets import load_boston
"""
load* 和 fetch* 返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是[n_samples* n_features]的二维numpy.ndarray 数组
target: 标签数组,是n_samples 的一维numpy.ndarray数组
DESCR: 数据描述
feature_names: 特征名:新闻数据,手写数字,回归数据集没有特征名
terget_names: 标签名
"""
lb = load_boston()
print("获取特征值")
print(lb.data)
print("目标值")
print(lb.target)
print(lb.feature_names)
print(lb.DESCR)
from sklearn.preprocessing import StandardScaler
# 直接用fit_transform()
s1 = StandardScaler()
data1 = s1.fit_transform([[1, 2, 3], [4, 5, 6]])
print(data1)
"""
原始数据:
[[1, 2, 3],
[4, 5, 6]]
直接输出:
[[-1. -1. -1.]
[ 1. 1. 1.]]
"""
# 将fit_transform() 分成fit() 和 transform()
s2 = StandardScaler()
mid = s2.fit([[1, 2, 3], [4, 5, 6]])
print(mid)
# 输出结果为:StandardScaler(copy=True, with_mean=True, with_std=True),并不是数值
# fit()函数是一个中间过程,算出来的平均值、方差等等在mid里,无法直接查看
data2 = mid.transform([[1, 2, 3], [4, 5, 6]])
print(data2)
# 结果与data1相同
# 但是如果将mid = s2.fit([[1, 2, 3], [4, 5, 6]])改成mid = s2.fit([[2, 3, 4], [4, 5, 7]])
mid = s2.fit([[2, 3, 4], [4, 5, 7]])
data3 = mid.transform([[1, 2, 3], [4, 5, 6]])
print(data3)
"""
data3的结果与data2不同
原因是data3的mid 和 data2的mid 不相同
平均值和方差都可能发生了改变
"""