1、机器学习基本概念
机器学习:是从历史数据中自动分析获取模型,并利用模型对未知数据进行预测。
2、机器学习开发流程
2.1 获取数据及数据集构成
获取已有数据
-
数据库中获取 -
excel中获取 -
txt、csv中获取 -
······
学习可用的第3方数据集
-
Kaggle网址:https://www.kaggle.com/datasets -
uci数据集网站:http://archive.ics.uci.edu/ml/ -
scikit-learn网址............................:http://scikit-learn.org/stable/datasets/index.html#datasets
机器学习数据集的构成
-
由特征值(自变量)、目标值(因变量)构成。有些机器学习是可以没有目标值的,如聚类算法。
2.2 数据预处理
如:缺失值、异常值、数据转化等的数据清洗及处理。在python使用pandas库,可参考:数据清洗,计算转化。
2.3 特征工程
是使用专业背景知识和技巧处理数据,使得特征值(自变量)能在机器学习算法上发挥更好的作用的过程。特征工程主要包含的内容(其详细内容在公众号中有单独详细的讲解文章):
-
特征抽取/提取 -
特征预处理 -
特征降维 -
数据集的划分 -
训练集:70%-80% -
测试集:20%-30%
2.4 算法分类
在公众号后面的文章中会分享每个模型
2.5 模型评估
-
混淆矩阵 -
准确率、精确率、召回率、F1-score -
ROC曲线和AUC值 在公众号后面的文章中会分享详细的模型评估方法
2.6 模型的保存和加载
将训练模型保存下来,下次有新的需要预测的数据传进来的时候直接加载模型,然后预测就不用每次都再次训练了。具体方法根据使用的工具决定,后面模型实操内容中会讲解。
以上便是我们在做机器学习中的重要开发流程。
3、python机器学习工具
python语言机器学习工具(包括算法实例、数据集、文档、丰富的API等)
3.1 scikit-learn工具介绍
-
安装:pip install Scikit-learn -
指定版本安装:pip install Scikit-learn==0.19.2 -
依赖numpy、pandas、scipy -
导入:import sklearn
3.2 sklearn数据集API介绍
数据返回的是datasets.base.Bunch(继承自字典)
from sklearn import datasets
#机器学习数据集库
#sklearn.datasets.load_*()
# *:表示某个数据集的名称,load_:获取小规模数据集
df = sklearn.datasets.load_iris()
#iris:花儿的数据集
#print(df)
#sklearn.datasets.fetch_*(data_home=None)
# *:表示某个数据集的名称,获取大规模数据集,
#需要从网上下载,data_home:表示数据集下载的目录,默认是~/scikit_learn_data/
#sklearn.datasets.fetch_*(data_home=None,subset='all')
#subset='all' /'train' / 'test'
#全部数据集,训练数据集,测试数据集
#sklearn.datasets.fetch_20newsgroups(data_home=None,subset='all')
3.3 sklearn数据集返回值解释
from sklearn import datasets
#机器学习数据集库
df = sklearn.datasets.load_iris()
#iris:花儿的数据集
#display(df.data)
#返回特征值(自变量)数组
display(df["feature_names"])
#返回特征值的字段名称
display(df.target)
#返回目标值(因变量)数组
display(df.target_names)
#返回目标值解释
print(df["DESCR"])
#返回描述信息
#构建二维表
data=pd.DataFrame(df.data,columns=list(df["feature_names"]))
data["y"] = df.target
display(data.sample(5))
3.4 sklearn数据集划分
-
数据集切分的语法格式:x_train,x_test,y_train,y_test = model_selection.train_test_split(x,y,test_size=n,random_state=m) -
解释:x_train训练的特征值(自变量);x_test测试的特征值;y_train训练的目标值,y_test测试的目标值 = 划分函数(x特征值,y目标值,test_size=测试集比例,随机种子)
import numpy as np
import pandas as pd
import sklearn
#机器学习库
from sklearn import model_selection
#机器学习模型训练库
from sklearn import datasets
#机器学习数据集库
df = sklearn.datasets.load_iris()
#iris:花的数据集
x_train,x_test,y_train,y_test=sklearn.model_selection.train_test_split(
df.data, df.target,
test_size=0.2, random_state=11)
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)
#二维表DataFrame数据类,先构建二维表
data=pd.DataFrame(df.data,columns=list(df["feature_names"]))
data["y"] = df.target
display(data.sample(5))
x=data[df["feature_names"]]
y=data["y"]
x_train,x_test,y_train,y_test=model_selection.train_test_split(
x,y,test_size=0.2,random_state=11)
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)


