决策树、随机森林、逻辑回归、SVM、XGBoost重要参数

决策树、随机森林、逻辑回归、SVM、XGBoost重要参数

一、决策树

在这里插入图片描述
分类树的8个重要参数:criterion、2个随机性相关的参数(random_state,splitter)、5个剪枝参数(max_depth、min_samples_split、min_samples_leaf、max_feature、min_impurity_decrease)。
1、criterion:不纯度计算方法,信息熵entropy和基尼系数gini,默认gini。
2、random_state:设置分枝中随机模式的参数,默认为None。
3、splitter:控制决策树中的随机选项。best和random,默认最佳分枝best(分枝虽随机,但会优先选择更重要的特征分枝)。
4、max_depth:树大最大深度,建议从3开始尝试。
5、min_samples_split:一个节点至少包含min_samples_split个训练样本,默认为2。
6、min_samples_leaf:一个节点在分枝后的每个子节点都必须包含min_samples_leaf个训练样本,建议从5开始尝试。
7、max_features:限制分枝时考虑的特征个数(和max_depth异曲同工)。
8、min_impurity_decrease:限制信息增溢的大小,信息增溢小于设定数值的分枝不会发生。

网格搜索调参

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
times = time()
parameters = {
   'splitter':('best','random')
             ,'criterion':("gini","entropy")
             ,"max_depth":[*range(1,10)]
             ,'min_samples_leaf':[*range(1,50,5)]
             ,'min_impurity_decrease':[*np.linspace(0,0.5,20)]
             }
  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会按照您的要求进行回答。 首先,针对您提供的adult.csv数据集,我们需要进行一些预处理操作。以下是数据预处理的Python代码: ```python import pandas as pd from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, MinMaxScaler from sklearn.feature_selection import SelectKBest, chi2 from sklearn.model_selection import StratifiedKFold from sklearn.metrics import classification_report, confusion_matrix from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier from xgboost import XGBClassifier from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC # 读取数据 data = pd.read_csv('adult.csv') # 缺失值填充 imputer = SimpleImputer(strategy='most_frequent') data = imputer.fit_transform(data) data = pd.DataFrame(data) # 标准化 scaler = StandardScaler() data.iloc[:, :14] = scaler.fit_transform(data.iloc[:, :14]) # 归一化 scaler = MinMaxScaler() data.iloc[:, :14] = scaler.fit_transform(data.iloc[:, :14]) # 筛选变量 selector = SelectKBest(chi2, k=10) X = selector.fit_transform(data.iloc[:, :14], data.iloc[:, 14]) X = pd.DataFrame(X) # 5折交叉验证 skf = StratifiedKFold(n_splits=5) for train_index, test_index in skf.split(X, data.iloc[:, 14]): X_train, X_test = X.iloc[train_index], X.iloc[test_index] y_train, y_test = data.iloc[train_index, 14], data.iloc[test_index, 14] # 逻辑回归 lr = LogisticRegression() lr.fit(X_train, y_train) y_pred = lr.predict(X_test) print('逻辑回归:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # 决策树 dt = DecisionTreeClassifier() dt.fit(X_train, y_train) y_pred = dt.predict(X_test) print('决策树:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # 随机森林 rf = RandomForestClassifier() rf.fit(X_train, y_train) y_pred = rf.predict(X_test) print('随机森林:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # adaboost ab = AdaBoostClassifier() ab.fit(X_train, y_train) y_pred = ab.predict(X_test) print('adaboost:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # xgboost xgb = XGBClassifier() xgb.fit(X_train, y_train) y_pred = xgb.predict(X_test) print('xgboost:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # 朴素贝叶斯 nb = GaussianNB() nb.fit(X_train, y_train) y_pred = nb.predict(X_test) print('朴素贝叶斯:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) # SVM svm = SVC() svm.fit(X_train, y_train) y_pred = svm.predict(X_test) print('SVM:') print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) ``` 以上代码中,我们首先使用pandas库读取了adult.csv数据集;然后使用sklearn库中的SimpleImputer方法对缺失值进行了填充,使用了众数填充的方法;接着使用sklearn库中的StandardScaler和MinMaxScaler方法对数据进行了标准化和归一化处理;使用sklearn库中的SelectKBest和chi2方法对数据进行了变量筛选操作;使用sklearn库中的StratifiedKFold方法进行了5折交叉验证,其中使用了逻辑回归决策树随机森林、adaboost、xgboost、朴素贝叶斯和SVM方法进行了分类预测,并输出了分类精度和混淆矩阵。 需要说明的是,上述代码中的变量筛选方法使用的是chi2方法,其实还有其它的变量筛选方法,比如f_classif、mutual_info_classif等方法,可以根据具体需求进行选择。另外,上述代码中只是对数据集进行了简单的预处理和分类预测操作,如果需要进行更加复杂的操作,比如特征工程、调参等操作,需要根据具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值