scikit-learn使用

-----------------------模型辅助工具篇-------------------------------------------------------------------
1、数据预处理之preprocessing.LabelEncoder
用途:将类别特征标记为 0 到 n_classes - 1 的数
使用方法:
le = preprocessing.LabelEncoder()
le = le.fit(df_combined[feature])
df_train[feature] = le.transform(df_train[feature])

2、数据预处理之OneHotEncoder
用途:One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。其他信息见: http://blog.csdn.net/google19890102/article/details/44039761
使用方法:
enc = preprocessing.OneHotEncoder()
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])

array = enc.transform([[0,1,3]]).toarray()
print(array)
结果为:[[ 1.  0.  0.  1.  0.  0.  0.  0.  1.]]
结果是这么来的:1 0      010     0001。第一个0对应的训练样本只有01,所以为10;第二个1对应的训练样本有012,所以为010;第三个3对应的训练样本有0123,所以为0001。

3、数据预处理之model_selection.train_test_split
用途:随机划分训练集和测试集
num_test = 0.20
X_train, X_test, y_train, y_test = train_test_split(X_all, y_all, test_size=num_test, random_state=23)

random_state:是随机数的种子。
随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。
随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:
种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。

3、模型选择器之model_selection.GridSearchCV
用途:通过调整参数选择最好的参数提供给预估器使用
使用方法:
parameters = {'n_estimators':[4,6,9],
              'max_features':['log2', 'sqrt', 'auto'],
              'criterion':['entropy', 'gini'],
              'max_depth':[2,3,5,10],
              'min_samples_split':[2,3,5],
              'min_samples_leaf':[1,5,8]
              }
clf = RandomForestClassifier()
grid_obj = GridSearchCV(clf, parameters, scoring=acc_scorer)
说明:函数的定义如下
GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score='raise', return_train_score=True)
estimator:预估器,比如随机森林模型或者SVM等等
param_grid:参数列表,每个参数的候选项通过dict进行组织
scoring:打分器

-----------------------模型操作工具篇-------------------------------------------------------------------
1、随机森林模型RandomForestClassifier
1、原理:随机森林由LeoBreiman(2001)提出,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们之间的相关性。特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样品可以通过每一棵树的分类结果经统计后选择最可能的分类。
2、接口说明:
RandomForestClassifier(n_estimators=10, criterion='gini', 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_split=1e-07, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
n_estimators:森林中树的个数
criterion:衡量树分类好坏的标准,比如决策树中的熵的工具
3、方法说明:
from sklearn.ensemble import RandomForestClassifier

X = [[1,1],[1,3],[2,1],[2,5]]
Y = [0,1,0,1]
clf = RandomForestClassifier(n_estimators=10)
clf = clf.fit(X, Y)
print(clf.predict([2,3]))

猜你喜欢

转载自blog.csdn.net/qq_40086556/article/details/80018716