機械学習初心者です。
現在取り組んでいる課題に500sampleで63個程度の特徴量の2項分類問題があります。
機械学習においては特徴量の数は多ければ多いほど良いことが多いことは理解していますが、本当にそうなのか確認したいと思いました。
そこで63個の特徴量の内から、「特徴量1、2,3、、、63と一つずつ加えていき、精度(ROC_AUC)が低下か上がらなければprintで『特徴量Xは精度に貢献しません』とアラームを出す。」というプログラミングを書きたいと思っていますが、エラーが出てしまいます。
このダミーデータフレームは、
https://github.com/yamanaka1/dammy2
に置いてあります。
こうするとうまくいくかも、、というアドバイスありましたら大変ありがたいです。
python
1import numpy as np 2import pandas as pd 3from sklearn.linear_model import LogisticRegression 4from sklearn.model_selection import train_test_split, cross_val_score 5from sklearn.metrics import roc_curve 6from sklearn.metrics import roc_auc_score 7 8AUC = [0.5] 9 10for a in np.arange(2,64,1): 11 X = df1.iloc[:, 1:a] 12 y = df1.iloc[:,-1] 13 14 lr = LogisticRegression(C = 0.1, class_weight='balanced', random_state=0) 15 16 X_train, X_test, y_train, y_test = train_test_split( 17 X, y, test_size=0.2, random_state=0) 18 lr.fit(X_train, y_train) 19 cv_scores_train = cross_val_score(lr, X_train, y_train, cv = 3) 20 probs = lr.predict_proba(X_test) 21 probs2 = probs[:, 1] 22 auc = roc_auc_score(y_test, probs2) 23 24 if auc > AUC(-1): 25 print('AUC: {:.2f}'.format(auc)) 26 AUC.append(auc) 27 else: 28 print('特徴量{}は精度に寄与しません'.format(a))
ここでエラーは以下の様にでます。
TypeError Traceback (most recent call last)
<ipython-input-56-8bf996652a36> in <module>()
22 auc = roc_auc_score(y_test, probs2)
23
---> 24 if auc > AUC(-1):
25 print('AUC: {:.2f}'.format(auc))
26 AUC.append(auc)
TypeError: 'list' object is not callable
listではよくないとありますが、アドバイスを頂けると大変ありがたいです。
回答2件
あなたの回答
tips
プレビュー