sklearn中模型构建、参数调优、模型验证等的使用

1、参数选择
使用sklearn中算法进行建模时,算法接口提供默认的参数,为了提高模型的性能,往往需要对模型进行调参,sklearn提供两种参数搜索方式:一种是GridSearchCV搜索指定参数空间所有参数组合;另一种是RandomizedSearchCV 从特定分布的参数空间中,选择一些参数组合进行搜索。

from sklearn.linear_model import LinearRegression, LogisticRegression # 线性模型
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier # 集成学习模型
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV # 两种参数选择方式
"GridSearchCV搜索指定参数空间中所有参数的组合,所以适用于数据集较小情况下使用"
# 创建模型
lr = LogisticRegression()
# 设置参数集合
tuned_parameters = [{'penalty':('l1', 'l2'), 'C':[1,10,100,1000]}]
# 创建交叉验证对象,设置AUC作为评价指标
lr_clf = GridSearchCV(lr, tuned_parameters, cv=5, scoring='roc_auc')
lr_clf.fit(x_train, y_train)
# 不同参数下交叉验证的结果
lr_clf.cv_results_
# 参数集合中最优参数
lr_clf.best_params_

"""与GridSearchCV相比,RandomizedSearchCV并不计算所有参数组合,
而是从特定分布的参数空间中,选择一些参数组合进行搜索,通过n_iter设置"""
# 设置参数集合
tuned_parameters = [{'penalty':('l1', 'l2'), 'C':[1,10,100,1000]}]
# 创建交叉验证对象,设置随机选择20组参数组合进行评价
lr_clf = RandomizedSearchCV(lr, tuned_parameters, cv=5, scoring='roc_auc', n_iter=20)
lr_clf.fit(x_train, y_train)
lr_clf.predict(x_test) # 模型预测
lr_clf.predict_proba(x_test) # 返回一个概率矩阵,每一列表示一个类别的概率

2、模型验证

"""模型验证:
通常将数据集进行划分,有两种,一种是用将数据集按比例划分为训练集和测试集,通过test_size调节划分比例;
另一种是交叉验证。
"""
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=33)


from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_validate
from sklearn import svm
clf = svm.SVC(kernel='linear', C=1)
scores = cross_validate(clf, data, target, cv=5)
#print(scores)
scores = cross_val_score(clf, data, target, cv=5)

你可能感兴趣的:(数据挖掘与机器学习)