一.机器学习开发流程
1.获取数据 (公司本身就有,合作过来的数据,购买的数据)
2.数据的基本处理:pd去处理(缺失值,合并表。。。)
3.特征工程(特征进行处理)(重要)
4.找合适的算法进行预测 所谓模型=算法+数据得出来的
5.模型得评估,判定效果
6.若评估没有合格:1.换算法 或者调参 2.特征工程
7.评估合格 上线使用,以API形式提供
二.数据的划分
数据 = 训练集 + 测试集 一般分类范围[70%,30%],[80%,20%],[75%,25%] 选择[75%,25%]最多
训练集:用于训练,构造模型
测试集:用于评估模型是否有效
数据划分API: from sklearn.model_selection import train_test_split
train_test_split(x,y,test_size=None,random_state=None)
x:数据集的特征值
y:数据集的标签值
test_size:测试集的大小,float类型
random_state:随机数种子,不同的种子会造成不同随机采样的结果,相同的种子采样结果相同
return:x_train(训练集特征值), x_test(测试集特征值),y_train(训练集标签值),y_test(测试集标签值)
三.转换器和估计器
转换器
fit_transform():输入数据,直接转换
fit():输入数据,但不做事情 (计算平均值,方差等等)
transform():进行数据的转换
估计器
用于分类的估计器:
sklearn.neighbors k近邻
sklearn.naive_bayes 朴素贝叶斯
sklearn.linear_model.LogisticRegression 逻辑回归
sklearn.tree 决策树
用于回归的估计器:
sklearn.linear_model.LinearRegression 线性回归
sklearn.linear_model.Ridge 岭回归
估计器使用流程:1.调用fit(x_train,y_train)传入训练集特征值,训练集标签值
2.输入测试集的数据(y_predict = predict(x_test) 得到模型的预测值) (预测准确率:score(x_test,y_test))
四.算法的分类
先将训练数据分为监督学习和非监督学习
监督学习:训练数据拥有标记信息得学习任务
非监督学习:训练数据没有标记信息得学习任务
监督学习
1.分类(目标值是离散值得学习任务):k-近邻,朴素贝叶斯,决策树和随机森林,逻辑回归,神经网络
2.回归(目标值是连续值得学习任务):线性回归,岭回归
3.标注:隐马尔可夫模型
非监督学习
聚类 : k-means
五.模型评估标准
准确率,精确率和召回率
精确率:预测结果为正例样本中真实为正例的比例(查得准)
召回率:真实为正例的样本中预测结果为正例的比例(查的对)
分类评估的API: from sklearn.metrics import classification_report(y_true,y_predict,target_names=None)
y_true:真实目标值
y_predict:预测目标值
target_names:目标类别名称
return:每个类别精确率和召回率
六:模型选择与调优
交叉验证和网格搜索
交叉验证:将拿到的训练集的数据,分成训练和验证
网格搜索:很多参数需要手动指定的(如k-近邻的k值),叫做超参数,每组超参数都采用交叉验证去进行评估,最后选择最优参数组合建立模型
超参数搜索API:from sklearn.model_selection import GridSearchCV(estimator,param_grid=None,cv=None)
estimator:估计器对象
param_grid:估计器参数{}字典形式
cv:指定几折交叉验证
结果分析:best_score_:最好的准确率
best_estimator_:最好的模型
cv_results_: 每次交叉验证后测试集准确率结果和训练集准确率结果