ロジスティック回帰を行いたく、
python3.7
clf = LogisticRegression() clf.fit(X_train, y_train)
としたところ、
python3.7
File "C:\Users\JohnDoe\Anaconda3\lib\site-packages\sklearn\utils\optimize.py", line 243, in _check_optimize_result ).format(solver, result.status, result.message.decode("latin1")) AttributeError: 'str' object has no attribute 'decode'
が出てきてしまい先に進みません。何か考えられる原因などはありますでしょうか。
なお、h5pyのバージョンは2.10.0、Kerasのバージョンは2.8.0、Tensorflowのバージョンは1.14.0です。
不足している情報などあればお伝えください。よろしくお願いします。
追記
指摘があったため、以下にコード全体を載せます。参考にしていたサイトはIkemen Mas Kot氏のhttps://qiita.com/maskot1977/items/b2cfb369f60ad02887b0です。
python3.7
# 数値計算やデータフレーム操作に関するライブラリをインポートする import numpy as np import pandas as pd import statsmodels.api as sm import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler import csv # 図やグラフを図示するためのライブラリをインポートする。 #%matplotlib inline import matplotlib.pyplot as plt from pandas import plotting # 機械学習関連のライブラリ群 from sklearn.model_selection import train_test_split # 訓練データとテストデータに分割 from sklearn.metrics import confusion_matrix # 混合行列 from sklearn.decomposition import PCA #主成分分析 from sklearn.linear_model import LogisticRegression # ロジスティック回帰 from sklearn.neighbors import KNeighborsClassifier # K近傍法 from sklearn.svm import SVC # サポートベクターマシン from sklearn.tree import DecisionTreeClassifier # 決定木 from sklearn.ensemble import RandomForestClassifier # ランダムフォレスト from sklearn.ensemble import AdaBoostClassifier # AdaBoost from sklearn.naive_bayes import GaussianNB # ナイーブ・ベイズ from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA# 線形判別分析 from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA # 二次判別分析 # データを読み込む df = pd.read_csv('./data/wine.csv') # 標準化 scaler = StandardScaler() scaler.fit(np.array(df)) df_std = scaler.transform(np.array(df)) df_std = pd.DataFrame(df_std,columns=df.columns) # qualityが6未満は0,6以上は1に分類 df["class"] = [0 if i < 6 else 1 for i in df['quality'].tolist()] # col_name取得 col_name = df.columns #print(col_name[:12]) # それぞれに与える色を決める。 color_codes = {0:'#0000FF', 1:'#FF0000'} colors = [color_codes[x] for x in df['class'].tolist()] # 散布図行列の作成(全要素の一対一の相関関係) # 2変数に強い相関があるなら片方に絞る # 一定値しかとらない変数は削除 # plotting.scatter_matrix(df.dropna(axis=1)[df.columns[:-1]], figsize=(20, 20), color=colors, alpha=0.5) # plt.show() """ # 主成分分析 dfs = df.apply(lambda x: (x-x.mean())/x.std(), axis=0).fillna(0) # データの正規化 pca = PCA() pca.fit(dfs.iloc[:, :12]) # データを主成分空間に写像 = 次元圧縮 feature = pca.transform(dfs.iloc[:, :12]) #plt.figure(figsize=(6, 6)) plt.scatter(feature[:, 0], feature[:, 1], alpha=0.5, color=colors) plt.title("Principal Component Analysis") plt.xlabel("The first principal component") plt.ylabel("The second principal component") plt.grid() plt.show() """ X = df.iloc[:, 1:12] # 説明変数(Column1は明らかに関係ないので外す) print(X.columns) y = df.iloc[:, 13] # 目的変数 print(X) print(y) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4) # 訓練データ・テストデータへのランダムな分割(40%がテスト60%が訓練) clf = LogisticRegression() #モデルの生成 clf.fit(X_train, y_train) #学習 # 正解率 (train) : 学習に用いたデータをどのくらい正しく予測できるか clf.score(X_train,y_train) # 正解率 (test) : 学習に用いなかったデータをどのくらい正しく予測できるか clf.score(X_test,y_test)
まだ回答がついていません
会員登録して回答してみよう