python常用框架工具之sklearn——华为AI学习笔记13
sklearn全称scikit-learn,支持建模全流程。
1. 数据集
内置学习数据集,如波士顿房价、癌症预测等
以波士顿房价为例
2. 特征工程
实现机器学习算法对数据的预处理,决定的学习的上限,处理数据和提取数据的工具
2.1. 数据无量纲化
2.1.1. 数据编码
2.1.1.1. OneHot
OneHot,现在非常常用的编号形式
sklearn.preprocessing.OneHotEncoder()
比如:
小学:100
中学:010
大学:001
2.1.1.2. Label
sklearn.preprocessing.LabelEncoder()
2.1.2. 特征选择
2.1.2.1. 训练集划分
2.1.3. 归一/标准化
sklearn.preprocessing.MinMaxScaler(),会受到最大值和最小值的影响,如果最大或最小值是异常值,这个方法就会受到影响
sklearn.preprocessing.StandardScaler(),变化到均值为0,标准差为1的范围
回到波士顿房价的例子
这里训练集的标准化用的是fit_transform,它是fit和transform的组合,fit指先求训练集的均值、方差、最大值、最小值,然后再对数据进行标准化。而测试集用的是transform,它不需要再单独求均值、方差等特征,使用训练集的特征。
2.1.4. 特征降维
常用的主成分分析降维
sklearn.decomposition.PCA()
3. 算法API
基本包括所有常见的机器学习算法
3.1. 有监督算法
3.1.1. 回归算法
3.1.1.1. 线性回归
sklearn.linear_model.LinearRegression(fit_intercept=True)
sklearn.linear_model.SGDRegression(loss,fit_intercept=True,learning_rate),梯度下降,learning_rate为学习率
再回波士顿房价的例子
回归效果的评价可以使用sklearn.metrics.mean_squared_error
还可以通过图形来展示
3.1.2. 分类算法
3.1.2.1. 逻辑回归
二分类算法
sklearn.liner_model.LogisticRegression()
3.1.2.2. 决策树
sklearn.tree.DecisionTreeClassifier(criterion,max_depth=None,random_state=None)
criterion:信息,一般选信息熵或吉尼系数
max_depth:注意不要太深,容易过拟合
random_state:设定后就成了伪随机
3.1.2.3. KNN
当前数据离哪个比较近就是哪个类别
sklearn.neighbors.KNeighborsClassifier(n_neighbors,algorithm='auto')
3.1.2.4. 朴素贝叶斯
sklearn.naive_bayes.MultinomialNB(alpha=1.0)
3.2. 无监督算法
3.2.1. 聚类算法
3.2.1.1. k-means
sklearn.cluster.KMeans(n_cluster=8,init='kmeans++')
3.2.1.2. DBSCAN
密度聚类
sklearn.cluster.DBSCAN()
还有些其他的聚类方法
4. 模型调优
4.1. k折交叉验证
在原有数据集基础上再进行划分,划分成k份,每次先一份当验证集,形成k个模型,然后拿到测试集上进行测试
sklearn.model_selection.KFold()
或者某些方法里的参数CV
或者手动for循环
4.2. 网格搜索
有点类似暴力搜索
sklearn.model_selection.GridSearchCV(estimator,param_grid=None,cv=None)
4.3. 随机搜索
sklearn.model_selection.RandomizedSearchCV()
5. 模型的保存与加载
5.1. 保存
from sklearn.externals import joblib
joblib.dump(model,'model.pkl')
5.2. 加载
from sklearn.externals import joblib
estimator = joblib.load('model.pkl')
- 点赞
- 收藏
- 关注作者
评论(0)