目录
1 机器学习概述
步骤:
获取数据,数据处理,特征工程,机器学习算法训练---模型,模型评估(若不满足,则回到步骤2)
2 特征工程
常用数据集:
from sklearn.datasets import load_iris, fetch_20newsgroups
返回值:data 特征值
target 目标值
feature_names 特征名
target_names 目标名
数据集划分:
sklearn.model_selection.train_split(arrays, *options)
参数: x 特征值
y 目标值
test_size 测试机大小
random_state 随机数种子,相同的随机数种子保证采样相同
返回值:训练集特征值,测试集特征值,训练集特征值,测试集目标值
2.1特征提取
sklearn.feature_extraction.DictVectorizer(space=True) # 字典特征提取
参数: space稀疏矩阵
方法: fit_transform(x)
get_feature_names()
sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 文本特征提取
方法: fit_transform(x)
get_feature_names()
注:中文分词,利用jieba模块,调用jieba.cut()函数
sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None) 文本特征提取
方法: fit_transform(x)
get_feature_names()
2.2特征预处理
sklearn.preprocessing.StandardScaler() 标准化
方法: fit_transform(x)
返回值:转换后的形状相同的array
2.3特征降维
sklearn.feature_selection.VarianceThreshold(threshold=0.0) 低方差特征过滤
方法: fit_transform(x)
scipy.stats.pearsonr(X,Y) 相关系数
返回值:(相关系数,p_value)
2.4主成分分析
sklearn.decomposition.PCA(n_components=None)
参数:n_components 整数 减少到多少特征值
小数 表示保留多少百分比
方法: fit_transform(x)
2.5总结
特征工程步骤:
- 实例化(获得一个转换器类)
- 调用fit_transform()
fit_transform()构成:
fit() 计算每一列平均数、标准差
transform() (X-mean)/std进行最终的转换
3分类算法
概念:转换器(transfer)、估计器(estimator)
3.1 KNN算法
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm=’auto’)
特点:适用于少量数据
参数: n_neighbors 为int,可选(默认为5);即K值,邻居数
algorithm:{‘auto’,’ball_tree’,’kd_tree’,’brute’} 算法选择
方法:fit(X,Y)
3.2 交叉验证和超参数搜索
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)
功能:对估计器中的指定参数进行详尽的搜索
参数: estimator 估计器对象
param_gird 估计器参数(为dict) 如 {‘n_neighbors’:[1,3,5]}
cv 指定几折交叉验证
返回值:模型
方法: fit(X,Y) 输入训练数据
score() 准确率
属性: best_params_ 最佳参数
best_score_ 最佳结果
best_estimator_ 最佳估计器
cv_results_ 交叉验证结果
3.3 朴素贝叶斯算法
sklearn.naive_bayes.MultinomialNB(alpha=1.0)
作用:用于样本概率值为零的情况,即防止分类概率为零
特点:适用于文本分类
参数: alpha 拉普拉斯平滑系数
方法: fit(X,Y)
3.4 决策树分类器
sklearn.tree.DecisionTreeClassifier (criterion=’gini’, max_depth=None, random_state=None)
作用:用于决策,(选择信息增益最大的参数)
特点:可视化、解释能力强
参数: criterion 决策树划分依据
max_depth 树的深度
random_state 随机数种子
决策树可视化:
sklearn.tree.export_grapyviz(estimator, out_file=’tree.dot’, feature_names=[‘’, ‘’])
3.5 随机森林分类器
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’,
max_depth=None, bootstrap=true, random_state=None,
min_samples_split=2)
特点:适用于高维度特征,大数据
参数: n_estimators 为int,森林的森林数量
criterion 为string,分割特征的测量方法
max_depth 树的最大深度
bootstrap 是否使用放回抽样
min_samples_split 节点划分最少样本数
min_samples_leaf 叶子节点最少样本数
上述超参数:n_estimators, max_depth, min_samples_split, min_samples_leaf
4 回归和聚类
注意:本章模型调用都是: #除了K-means算法
fit(X, Y)
4.1 线性回归
(1) 正规方程
sklearn.linear_model.LinearRegression(fit_intercept=True)
参数: fit_intercept 是否计算偏置
属性: coef_ 回归系数
intercept_ 偏置
(2) 梯度下降
sklearn.linear_model.SGDRegressor(loss=’squared_loss’, fit_intercept=True,
learning_rate=’invscaling’, eta0=0.01)
参数: loss 损失类型,squared_loss:普通最小二乘法
fit_intercept 是否计算偏置
learning_rate 学习率填充
‘invscaling’ 为eta=eta0/pow(t, power_t)
‘optimal’ 为eta=1.0/(alpha*(t+t0))
‘constant’ 为eta=eta0
eta0 最初的学习率,eta 学习率
属性: coef_ 回归系数
intercept_ 偏置
(3) 模型评估
均方误差评估:
sklearn.metrics.mean_squared_error(y_true, y_pred)
参数: y_true 真实值
y_pred 预测值
返回值: 均方误差的结果,浮点数表示
4.2岭回归
欠拟合 原因:原始数据特征过少
办法:增加特征数量
过拟合 原因:原始数据特征过多
办法:L2正则化,即:岭回归
岭回归,(L2正则化的线性回归)
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, solver=’auto’,
normalize=Flase)
参数: alpha 正则化力度,取值0~1,1~10
solver 根据数据自动选择优化方法,可选’sag’ 随机梯度下降
normalize 数据是否进行标准化
若选False,则之前需要特征标准化
属性: coef_ 回归系数
intercept_ 回归偏置
4.3 逻辑回归和二分类
逻辑回归,解决二分类的利器
sklearn.linear_model.LogisticRegression(solver=’liblinear’, penalty=’L2’, c=1.0)
参数: solver 优化的求解方法,可选sag
penalty 正则化种类
c 正则化力度
属性: coef_ 回归系数
intercept_ 回归偏置
模型评估:
(1) 精确度和召回率
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)
参数: y_true 真实目标值
y_pred 估计器预测目标值
labels 指定类别对应的数字
target_names 目标类别名称
返回值:每个类别的精确度、召回率(重要)
(2)AUC指标
sklearn.metrics.roc_auc_score(y_true, y_score)
特点:最小值为0.5,最大值为1,越大越好。AUC只能评估二分类
参数: y_true 每个样本中的真实类别,必须为0(反例)或1(正例)标记
y_score 预测得分
返回值:AUC指标
4.4无监督学习---K-means算法
sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’)
特点:多次迭代算法
参数: n_clusters 开始聚类中心的数量,即K值
init 初始化方法
属性: labels 默认的标记类型
方法: fit(X)
模型评估:
轮廓系数,取值[-1,1],越大越好
sklearn.metrics.silhouette_score(X, labels)
参数: X 特征值
labels 被聚类标记的目标值