1、机器学习概述
机器学习共有六个基本步骤:
-
问题定义
研究和提炼问题的特征,以帮助我们更好地理解项目的目标。
-
特征工程
-
数据理解
通过描述性统计和可视化来分析现有的数据质量和分布。
-
数据预处理
对数据进行预处理,特征选定,以便于构建一个预测模型。
-
-
模型选择
通过一定的方法分离一部分数据,用来评估算法模型,并选取一部分代表数据进行分析,以改善模型。
-
模型优化
通过调参和集成算法提升预测结果的准确度。
-
模型部署
完成模型,并执行模型来预测结果和展示。
-
反馈跟踪
收集反馈结果,做正负向调节
2、入门案例示例
-
导入基本包:
import pandas as pd import numpy as np import matplotlib.pyplot as plt
-
导入数据:
# 导入数据 from sklearn.datasets import load_iris iris = load_iris() data_X = pd.DataFrame(iris.data,columns=iris.feature_names) data_y = iris.target
-
查看数据维度:
# 查看数据的维度 data_X.shape
-
查看数据自身:
# 查看数据自身 data_X.head(5)
-
统计描述数据:
# 统计描述数据 data_X.describe()
-
数据分类分布:
# 数据分类分布 for i in np.unique(data_y): print("{}:".format(i),sum(data_y==i))
-
单变量图表:
-
箱线图
# 箱线图 data_X.plot(kind="box",subplots=True,layout=(2,2),sharex=False,sharey=False,grid=True)
-
直方图
# 直方图 data_X.hist()
-
核密度估计图
# 核密度估计图 data_X.plot(kind="kde",subplots=True,layout=(2,2),sharex=False,sharey=False,grid=True,figsize=(8,8))
-
-
多变量图表:
-
散点矩阵图
from pandas.plotting import scatter_matrix scatter_matrix(data_X,figsize=(10,10))
-
-
评估算法:
-
分离数据集
# 分离数据集 from sklearn.model_selection import train_test_split validation_size = 0.2 seed = 7 X_train,X_validation,Y_train,Y_validation = train_test_split(data_X,data_y,test_size=validation_size,random_state=seed)
-
评估模式
# 评估模式 from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score # 导入算法模型 # 线性算法 from sklearn.linear_model import LogisticRegression # LR from sklearn.discriminant_analysis import LinearDiscriminantAnalysis # LDA # 非线性模型 from sklearn.tree import DecisionTreeClassifier # CART from sklearn.neighbors import KNeighborsClassifier # KNN from sklearn.naive_bayes import GaussianNB # NB from sklearn.svm import SVC # SVM # 设置随机数种子 seed = 7 # 装载算法 models = dict() models["LR"] = LogisticRegression() models["LDA"] = LinearDiscriminantAnalysis() models["KNN"] = KNeighborsClassifier() models["CART"] = DecisionTreeClassifier() models["NB"] = GaussianNB() models["SVM"] = SVC() # 评估算法 results = [] for key in models: kfold = KFold(n_splits=10,random_state=seed,shuffle=True) cv_results = cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring="accuracy") results.append(cv_results) print("{}:{} {}".format(key,cv_results.mean(),cv_results.std()))
-
箱线图比较算法效果
# 箱线图比较算法 fig = plt.figure() fig.suptitle("Algorithm Comparison") ax = fig.add_subplot(111) plt.boxplot(results) ax.set_xticklabels(models.keys()) plt.show()
-
-
实施预测
# 导入评估包 from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from pprint import pprint # 使用评估数据集评估算法 svm = SVC() svm.fit(X=X_train,y=Y_train) predictions = svm.predict(X_validation) pprint(accuracy_score(Y_validation,predictions)) pprint(confusion_matrix(Y_validation,predictions)) print(classification_report(Y_validation,predictions))
3、问题定义
三个W:
- 数据挖掘的对象是什么——who
- 数据挖掘的商业目的——what
- 数据挖掘要解决的业务问题——why
4、特征工程
4.1 数据理解
import pandas as pd
filename = "..."
dataframe = pd.DataFrame(filename)
-
查看数据的表现形式
dataframe.head(10)
-
查看数据的维度
# 展示数据行和列 dataframe.shape
-
查看数据的属性和类型
# 展示数据的类型 dataframe.dtypes
-
描述性统计