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

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

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

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

Q&A

解決済

1回答

321閲覧

リッジ回帰しようとしたらValue Error???

Pablito

総合スコア71

Python

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

0グッド

0クリップ

投稿2019/08/16 08:20

前提・実現したいこと

「東京大学のデータサイエンティスト育成講座」を使って、
現在機械学習の学習をしています。
その中でリッジ回帰の練習をしていたところ、
以下のエラーが起きました。

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

ValueError Traceback (most recent call last) <ipython-input-42-849a09ff5163> in <module> 13 14 for model in [linear, ridge]: ---> 15 model.fit(X_train, y_train) 16 print('{}(train):{:.6f}'.format(model.__class__.__name__, model.score(X_train, y_train))) 17 print('{}(test):{:.6f}'.format(model.__class__.__name__, model.score(X_test, y_test))) c:\users\jupyter-notebook\lib\site-packages\sklearn\linear_model\base.py in fit(self, X, y, sample_weight) 461 n_jobs_ = self.n_jobs 462 X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'], --> 463 y_numeric=True, multi_output=True) 464 465 if sample_weight is not None and np.atleast_1d(sample_weight).ndim > 1: c:\users\jupyter-notebook\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator) 725 _assert_all_finite(y) 726 if y_numeric and y.dtype.kind == 'O': --> 727 y = y.astype(np.float64) 728 729 check_consistent_length(X, y) ValueError: could not convert string to float: '?'

該当のソースコード

autoの中身

Python

1#class for ridge regression 2from sklearn.linear_model import Ridge 3from sklearn.model_selection import train_test_split 4 5#divide into training data and test data 6X = auto.drop('price', axis=1) 7y = auto['price'] 8X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) 9 10#construct and assess the model 11linear = LinearRegression() 12ridge = Ridge(random_state=0) 13 14for model in [linear, ridge]: 15 model.fit(X_train, y_train) 16 print('{}(train):{:.6f}'.format(model.__class__.__name__, model.score(X_train, y_train))) 17 print('{}(test):{:.6f}'.format(model.__class__.__name__, model.score(X_test, y_test)))

試したこと

astypeで全てのデータ型をfloat32に変えようとしたのですが、
同じエラーが起きました。

何卒宜しくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらく、csv で欠損値が ? で表されてるので、float に変換しようとした際に ? を数値に変換できないとエラーになっているのではないでしょうか。

以下の質問内容のように read_csv する際に na_values を指定すればよいと思います。

df = pd.read_csv("csv のファイル名", na_values="?")

Python - Pythonのpandasを使って'?'の文字列が含まれている行を削除したい|teratail

投稿2019/08/16 08:31

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Pablito

2019/08/16 08:37

ご回答ありがとうございます! 次はValueError: Input contains NaN, infinity or a value too large for dtype('float64'). が出てきてしまいました(´;ω;`)
tiitoi

2019/08/16 08:43

機械学習のアルゴリズムにデータを流す際は欠損値は補完または除去しておく必要があります。 df.dropna(inplace=True) で欠損値が含まれる行を除去できます。 お使いの参考書通りにやっているのだとしたら、参考書に書かれていないのでしょうか?
Pablito

2019/08/19 00:28

回答ありがとうございます! dropnaは出てきていませんでしたが、 実行すると全て上手くいきました! 大変にありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問