“Scikit-learn”的版本间差异
跳到导航
跳到搜索
(→随机森林) |
(→分类) |
||
(未显示同一用户的7个中间版本) | |||
第6行: | 第6行: | ||
$ python -m sklearnex my_application.py |
$ python -m sklearnex my_application.py |
||
==数据预处理== |
|||
*scale: 数据归一化 |
|||
⚫ | |||
from sklearn.preprocessing import scale |
|||
⚫ | |||
*数据去除nan数值,可以用impute实现 |
|||
⚫ | |||
from sklearn.impute import SimpleImputer |
|||
imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') |
|||
ydata=Spax_PG16.reshape((len(Spax_PG16),1)) #必须二维数组 shape (n_samples, n_features) |
|||
print(ydata.mean()) #这时候是nan数值 |
|||
ydata=imp_mean.fit_transform(ydata) #平均值填空 |
|||
print(ydata.mean()) |
|||
ydata=ydata.reshape(-1) |
|||
*train_test_split() 分为训练和测试集 [https://www.cnblogs.com/Yanjy-OnlyOne/p/11288098.html] |
|||
from sklearn.model_selection import train_test_split |
|||
:参数stratify是为了保持split前类(标签)的分布 (特别是用于标签数据不平衡,切不完全随机的时候) |
|||
*找出离群点: LOF |
|||
:输入的应该是nsample*nfeature的矩阵,很大的数据会很慢 |
|||
from sklearn.neighbors import LocalOutlierFactor as LOF |
|||
clf = LOF(n_neighbors=2) |
|||
X = [[-1.1], [0.2], [101.1], [0.3]] |
|||
clf.fit(X) |
|||
⚫ | |||
* 参考 [https://zhuanlan.zhihu.com/p/51165358] [https://towardsdatascience.com/an-implementation-and-explanation-of-the-random-forest-in-python-77bf308a9b76] |
* 参考 [https://zhuanlan.zhihu.com/p/51165358] [https://towardsdatascience.com/an-implementation-and-explanation-of-the-random-forest-in-python-77bf308a9b76] |
||
* 在sklearn内部,DecisionTreeClassifier, RandomForestClassifier等基于决策树的分类模型默认使用'gini'作为impurity function,也可通过criterion参数指定为'entropy' ;而DecisionTreeRegressor, RandomForestRegressor等基于决策树的回归模型默认使用'mse'作为impurity function,也可通过criterion参数指定为'mae'。 |
|||
===分类=== |
|||
*sklearn.ensemble import RandomForestClassifier |
*sklearn.ensemble import RandomForestClassifier |
||
*n_estimators:随机森林中「树」的数量。 |
*n_estimators:随机森林中「树」的数量。 |
||
第21行: | 第39行: | ||
*bootstrap:是否使用 bootstrapping 来为随机林中的每棵树提供数据。(bootstrapping 是从数据集中进行替换的随机抽样。) |
*bootstrap:是否使用 bootstrapping 来为随机林中的每棵树提供数据。(bootstrapping 是从数据集中进行替换的随机抽样。) |
||
*n_jobs: 可以决定要使用多少处理器内核来运行模型。设置「n_jobs = -1」将使模型运行最快,因为它使用了所有计算机核心。 |
*n_jobs: 可以决定要使用多少处理器内核来运行模型。设置「n_jobs = -1」将使模型运行最快,因为它使用了所有计算机核心。 |
||
==== |
====Naive Bayes==== |
||
*[https://scikit-learn.org/stable/modules/naive_bayes.html] |
|||
⚫ | |||
===回归=== |
|||
⚫ | |||
*所有的参数,属性与接口,全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标, 参数Criterion不一致。 |
*所有的参数,属性与接口,全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标, 参数Criterion不一致。 |
||
RandomForestRegressor(n_estimators='warn', |
|||
criterion='mse', |
|||
max_depth=None, |
|||
min_samples_split=2, |
|||
min_samples_leaf=1, |
|||
min_weight_fraction_leaf=0.0, |
|||
max_features='auto', |
|||
max_leaf_nodes=None, |
|||
min_impurity_decrease=0.0, |
|||
min_impurity_split=None, |
|||
bootstrap=True, |
|||
oob_score=False, |
|||
n_jobs=None, |
|||
random_state=None, |
|||
verbose=0, |
|||
warm_start=False) |
|||
*criterion |
|||
:"mse"使用均方误差mean squared error(MSE),"friedman_mse"使用费尔德曼均方误差; "mae"使用绝对平均误差MAE(mean absolute error) |
|||
* 对于回归来说,并不存在一个样本要被分到某个类别的概率问题,因此没有predict_proba这个接口。 |
|||
* 对缺失值的处理参见 [https://blog.csdn.net/gracejpw/article/details/102611273] |
|||
⚫ | |||
⚫ | |||
==keras的wrapper== |
|||
*[https://keras-cn.readthedocs.io/en/latest/scikit-learn_API/] |
2022年7月26日 (二) 03:06的最新版本
- python中的机器学习软件库:[1]
- Installed package of scikit-learn can be accelerated using scikit-learn-intelex. More details are available here: https://intel.github.io/scikit-learn-intelex. For example:
$ conda install scikit-learn-intelex $ python -m sklearnex my_application.py
数据预处理
- scale: 数据归一化
from sklearn.preprocessing import scale
- 数据去除nan数值,可以用impute实现
from sklearn.impute import SimpleImputer imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') ydata=Spax_PG16.reshape((len(Spax_PG16),1)) #必须二维数组 shape (n_samples, n_features) print(ydata.mean()) #这时候是nan数值 ydata=imp_mean.fit_transform(ydata) #平均值填空 print(ydata.mean()) ydata=ydata.reshape(-1)
- train_test_split() 分为训练和测试集 [2]
from sklearn.model_selection import train_test_split
- 参数stratify是为了保持split前类(标签)的分布 (特别是用于标签数据不平衡,切不完全随机的时候)
- 找出离群点: LOF
- 输入的应该是nsample*nfeature的矩阵,很大的数据会很慢
from sklearn.neighbors import LocalOutlierFactor as LOF clf = LOF(n_neighbors=2) X = [[-1.1], [0.2], [101.1], [0.3]] clf.fit(X)
随机森林
- 参考 [3] [4]
- 在sklearn内部,DecisionTreeClassifier, RandomForestClassifier等基于决策树的分类模型默认使用'gini'作为impurity function,也可通过criterion参数指定为'entropy' ;而DecisionTreeRegressor, RandomForestRegressor等基于决策树的回归模型默认使用'mse'作为impurity function,也可通过criterion参数指定为'mae'。
分类
- sklearn.ensemble import RandomForestClassifier
- n_estimators:随机森林中「树」的数量。
- max_features:每个分割处的特征数。
- max_features = 'sqrt' 这意味着如果有16个特征,则在每个树中的每个节点处,只考虑4个随机特征来拆分节点。
- max_depth:每棵树可以拥有的最大「分裂」数。
- min_samples_split:在树的节点分裂前所需的最少观察数。
- min_samples_leaf:每棵树末端的叶节点所需的最少观察数。
- bootstrap:是否使用 bootstrapping 来为随机林中的每棵树提供数据。(bootstrapping 是从数据集中进行替换的随机抽样。)
- n_jobs: 可以决定要使用多少处理器内核来运行模型。设置「n_jobs = -1」将使模型运行最快,因为它使用了所有计算机核心。
Naive Bayes
回归
- sklearn.ensemble.RandomForestRegressor [6]
- 所有的参数,属性与接口,全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标, 参数Criterion不一致。
RandomForestRegressor(n_estimators='warn', criterion='mse', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False)
- criterion
- "mse"使用均方误差mean squared error(MSE),"friedman_mse"使用费尔德曼均方误差; "mae"使用绝对平均误差MAE(mean absolute error)
- 对于回归来说,并不存在一个样本要被分到某个类别的概率问题,因此没有predict_proba这个接口。
- 对缺失值的处理参见 [7]
ANN
- MLPRegressor回归,参考 http://www.weixueyuan.net/a/914.html