1 简单介绍机器学习
1.2 什么是机器学习
1.2.1 定义
机器学习是从历史数据中自动分析(学习),获得模型(规律),并利用模型对未知数据进行**预测(结果)**的过程。
学习–>规律–>预测
1.2.2 数据集的构成
数据集就是所谓的 历史数据
数据集一般由特征值和目标值构成,数据集可以没有目标值。
1.3 机器学习算法分类
1.3.1 监督学习
目标值:类别(离散型数据) ==》分类算法 ==》(天气阴雨晴等,人脸识别)
目标值:连续型的数据(具体的数据) ==》回归算法 ==》(天气温度 具体的温度数值)
1.3.2 无监督学习
目标值:无目标值 ==》聚类算法
1.4 机器学习开发流程
1 获取数据
2 数据处理:处理缺失值,错乱数据
3 特征工程:训练数据和测试数据。将数据处理成能被算法直接使用的数据。
4 机器学习算法训练:得到模型
5 模型评估:如果效果不好,需要返回到2,3,4,进行处理,循环处理直到效果满意。
2 介绍数据集
2.1 数据集
###2.1.1 可用数据集
学习阶段可用数据集:
1 sklearn
2 kaggle
3 UCI
2.1.2 sklearn数据集
1 sklearn数据集API介绍:
sklearn.datasets
加载获取流行数据集方法:
datasets.load_*():获取小规模数据集,数据包含在datasets里面
datasets.fetch_*(): 获取大规模数据集,需从网上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scilit_learn_data/
sklearn小数据
sklearn.datasets.load_iris():加载并返回鸢尾花数据集
sklearn.datasets.load_boston():加载并且返回波士顿房价数据集
sklearn大数据集
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=“train”)
subset:“train"或者"test”, “all”, 可选,选择要加载的数据集。训练集的"训练", 测试集的"测试", 两者的全部
2.1.3 sklearn数据集的使用
以鸢尾花数据集为例,sklearn数据集的返回值介绍
load和fetch返回的数据类型 **datasets.base.Bunch **字典格式(继承自字典)
data:特征值数组,是[n_samples*n_features]的二维 numpy.ndarray数组
target: 目标值,标签数组,是n_samples的一维 numpy.ndarray 数组
DESCR:数组描述
feature_names: 特征名,新闻数据,手写数字,回归数据集
target_names: 目标值-标签名
datasets.base.Bunch(字典格式(继承自字典)
格式:
dict[“key”] = values (继承自字典的索引)
特有格式:
bunch.key = values (.模式)
2.1.4 数据集的划分
机器学习一般的数据集会分为两个部分:
训练数据:用于训练,构建模型
测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
训练集:70% 80% 75%
测试集:30% 20% 30%
数据集划分API
sklearn.model_selection.train_test_split(arrays,*options)
传参:
x:数据集的特征值
y:数据集的标签值(目标值)
test_size:测试集的大小,一般为float(0.2)
random_state:随机数种子,不同的种子会造成不同的随机采样结果,相同的种子采样结果相同
return:训练集特征值,测试集特征值,训练集目标值,测试集目标值
return::x_train,x_test,y_train,y_test
代码:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def datasets_demo():
"""
sklearn 数据集使用
:return:
"""
# 获取数据集
iris = load_iris()
print("鸢尾花数据集:\n", iris)
print("查看数据集描述:\n", iris["DESCR"])
print("查看特征值的名字:\n", iris.feature_names)
print("查看特征值:\n", iris.data, iris.data.shape)
print("查看目标值:\n", iris.target)
print("查看目标值的名字:\n", iris.target_names)
# 数据集的划分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
print("训练集的特征值:\n", x_train, x_train.shape)
print("训练集的目标值:\n", y_train, y_train.shape)
return None
datasets_demo()
转载请注明转自:https://blog.csdn.net/Owen_goodman/article/details/108283399