你定义的函数test_PCA_GBDTClassifier()不是优化器
我试了下,下面这个能跑:
import pandas as pd
import random
import requests
from sklearn.model_selection import KFold, StratifiedKFold
from sklearn.model_selection import cross_val_score, cross_val_predict
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import roc_auc_score, roc_curve, confusion_matrix, accuracy_score
from sklearn.ensemble import GradientBoostingClassifier
from sklearn import metrics
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from math import sqrt, fabs, exp
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
# 加载数据集
df = pd.read_csv('AD.csv')
x = df.iloc[:, 0:-1].values # 属性
y = df.iloc[:, -1].values # 标签
nrows = len(x)
ncols = len(x[1])
# def test_PCA_GBDTClassifier():
pipe_gbdt = Pipeline([('sc', StandardScaler()),
('pca', PCA(n_components=13)),
('gbdt', GradientBoostingClassifier(min_samples_split=300, min_samples_leaf=20,
max_depth=8, learning_rate=0.1,
subsample=0.8, random_state=10))])
sfolder = StratifiedKFold(n_splits=10, random_state=20, shuffle=False) # 10折SKFold
scores = []
for i, (train_index, test_index) in enumerate(sfolder.split(x, y)):
x_train, x_test = x[train_index], x[test_index]
y_train, y_test = y[train_index], y[test_index]
pipe_gbdt.fit(x_train, y_train)
score = pipe_gbdt.score(x_test, y_test)
scores.append(score)
cv_score = np.mean(scores)
cv_std = np.std(scores)
# print('Fold: %s, Acc: %.3f' %(i+1, score)) #每一折训练集的准确率
print(f"CV accuracy:{cv_score} +/- {cv_std}") # 平均准确率和标准差
# return (cv_score, cv_std)
param_test1 = {'n_estimators': (10, 100, 10)}
gsearch1 = GridSearchCV(estimator=DecisionTreeClassifier(random_state=0),
param_grid=[{'max_depth': [1, 2, 3, 4, 5, 6, 7, None]}], scoring='accuracy', iid=False, cv=5)
gsearch1.fit(x, y)
print(gsearch1.best_params_, gsearch1.best_score_)
没讲逻辑哈
2020年12月09日 09点12分
20
非常谢谢。我后来换了个方法,跑通了,确实是def这里出的问题。
2020年12月15日 06点12分