質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

欠損値を削除できない(Python)

yuki.m.0525
tatukiiii.03

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

118閲覧

投稿2022/05/22 03:21

決定木やカーネルSVMを用いて予測モデルを作成したい

Pythonで倒産確率(ダミー変数で表現されています)を当てるモデルを作成しています.
その際にアンダーサンプリング等をしてデータを形成しているのですが欠損値が存在します.

実現したいこと

欠損値を削除して,データを作成したいです.

発生している問題・エラーメッセージ

AttributeError: 'numpy.ndarray' object has no attribute 'dropna'

問題以外のソースコード(正常に動いている)

python

####################### # 必要なライブラリを読み込む ####################### # データフレームが扱えるよう、pandas をインポート import pandas as pd # numpy のデータが扱えるよう、numpy をインポート import numpy as np # データ分割を行う便利なモジュール train_test_split をインポート from sklearn.model_selection import train_test_split # アンダーサンプリング用ライブラリをインポート from imblearn.under_sampling import RandomUnderSampler # データの標準化を行うためのモジュールをインポート from sklearn.preprocessing import StandardScaler # サポートベクターマシンを行うためのモジュールをインポート from sklearn.svm import SVC # ヒストグラムを描くためのモジュールをインポート import matplotlib.pyplot as plt import seaborn as sns # 正解率を作成するためのモジュールをインポート from sklearn.metrics import accuracy_score # 混合行列を作成するためのモジュールをインポート from sklearn.metrics import confusion_matrix # ROCを作成するためのモジュールをインポート from sklearn.metrics import roc_curve from sklearn.metrics import auc ############## #データを読み込む ############## df1 = pd.read_csv("/Usersi/Documents/ロールプレイモデル/データ/report.csv") ######################### # 説明変数と目的変数に分離する ######################### columnList = df1.columns.to_list() columnList.remove("KAISHA_CODE") columnList.remove("TOSAN_FLG") X = pd.DataFrame( df1.loc[:, columnList] ) y = pd.DataFrame( df1.loc[:, ["TOSAN_FLG"]] ) # データを訓練用データ・検証用データに分ける(訓練用:検証用=7:3) (X_train, X_test ,y_train, y_test) = train_test_split(X, y, test_size = 0.3) print(X_train.shape) print(y_train.shape) print(X_test.shape) print(y_test.shape) ###################### # アンダーサンプリングを行う ###################### # 正例の数を保存 positive_count_train = int(y_train["TOSAN_FLG"].sum()) # 正例が20%になるまで負例をアンダーサンプリング #rus = RandomUnderSampler(ratio={0:positive_count_train*4, 1:positive_count_train}, random_state=1234) rus = RandomUnderSampler(random_state=1234) # 学習用データに反映 X_train_rs, y_train_s = rus.fit_sample(X_train, y_train) X_train_rs = pd.DataFrame(X_train_rs, columns=columnList) y_train_rs = pd.DataFrame(y_train_s,columns=["TOSAN_FLG"]) print(rus) print(X_train_rs.shape) print(y_train_rs.shape) ################################################# # 説明変数を標準化(平均0、標準偏差1となるように変数変換)する ################################################# sclr_X = StandardScaler() sclr_X.fit(X_train_rs) X_train_rs_std = sclr_X.transform(X_train_rs) X_train_std = sclr_X.transform(X_train) X_test_std = sclr_X.transform(X_test)

問題のソースコード(上の続き)

python

##################### #欠損値を削除する ##################### X_test = X_test.dropna(inplace = True) X_test_std = X_test_std.dropna(inplace = True) X_train = X_train.dropna(inplace = True) X_train_rs = X_train_rs.dropna(inplace = True) X_train_rs_std = X_train_rs_std.dropna(inplace = True) X_train_std = X_train_std.dropna(inplace = True) y_test = y_test.dropna(inplace = True) y_train = y_train.dropna(inplace = True) y_train_rs = y_train_rs.dropna(inplace = True) y_train_s = y_train_s .dropna(inplace = True) ############################ # SVMを実施し、判別モデルを構築する ############################ clf = SVC(C=10, kernel='linear', probability=True, random_state=1234) clf.fit(X_train_rs_std,y_train_rs)

試したこと

他の関数を使用して,削除を試みましたがうまくいきません.

python

########### #欠損値を削除 ########### #X_train_rs_std = X_train_rs_std.dropna(inplace = True) #~np.isnan(X_test) X_test[~np.isnan(X_test)] #~np.isnan(X_test_std ) X_test_std[~np.isnan(X_test_std)] #~np.isnan(X_train) X_train[~np.isnan(X_train)] #~np.isnan(X_train_rs ) X_train_rs[~np.isnan(X_train_rs)] #~np.isnan(X_train_rs_std) X_train_rs_std[~np.isnan(X_train_rs_std)] #~np.isnan(X_train_std) X_train_std[~np.isnan(X_train_std)] #~np.isnan(X_train_rs_std) X_train_rs_std[~np.isnan(X_train_rs_std)] #~np.isnan(y_test ) y_test[~np.isnan(y_test)] #~np.isnan(y_train ) y_train[~np.isnan(y_train)] #~np.isnan(y_train_rs) y_train_rs[~np.isnan(y_train_rs)] #~np.isnan(y_train_s ) y_train_s[~np.isnan(y_train_s)] ############################ # SVMを実施し、判別モデルを構築する ############################ clf = SVC(C=10, kernel='linear', probability=True, random_state=1234) clf.fit(X_train_rs_std,y_train_rs)

表示されるエラーメッセージ

python

nput contains NaN, infinity or a value too large for dtype('float64').

エラーメッセージの意味

エラーメッセージの意味など検索しましたが,pandasやnumpyなどの問題も絡んでそうです.
初心者なので,周辺知識もなく的外れなことをしている可能性もあります.
よろしくお願いいたします.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。