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

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

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

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

Q&A

解決済

4回答

1121閲覧

あるCSVファイルのデータを綺麗にして、機械学習のtrain用データに使いたい

trey_0329

総合スコア109

Python

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

0グッド

0クリップ

投稿2019/01/21 03:27

編集2019/01/21 16:47

わからない、ではないのですが、アドバイスいただきたくこちらに投稿致しました。

<頂きたいアドバイス>
機械学習でワインのレビュースコアを予測したいと考えています。
しかし、使う予定のcsvファイルの各コラムに大量の種類のvalueがあり、それぞれ数値化するためにreplaceすると、膨大な時間がかかってしまいます。
どのようにデータのクリーニングをすればよろしいでしょうか?
自分だったらこうする、というアドバイスを頂きたいです。


今回クリーニングしたい各国のワインの評価がまとめられたCSVファイルのhead(3)です。
イメージ説明
全体のshapeは(129971, 9)です。

例えば、Varietyを見てみると
Pinot Noir 13272
Chardonnay 11753
Cabernet Sauvignon 9472
Red Blend 8946
Bordeaux-style Red Blend 6915
Riesling 5189
Sauvignon Blanc 4967
Syrah 4142
Rosé 3564
Merlot 3102
Nebbiolo 2804
Zinfandel 2714
Sangiovese 2707
Malbec 2652
Portuguese Red 2466
White Blend 2360
Sparkling Blend 2153
Tempranillo 1810
Rhône-style Red Blend 1471
Pinot Gris 1455
Champagne Blend 1396
Cabernet Franc 1353
Grüner Veltliner 1345
Portuguese White 1159
Bordeaux-style White Blend 1066
Pinot Grigio 1052
Gamay 1025
Gewürztraminer 1012
Viognier 996
Shiraz 836
...
Diamond 1
Blauburgunder 1
Tinta Amarela 1
Doña Blanca 1
Petit Courbu 1
Riesling-Chardonnay 1
Kinali Yapincak 1
Merseguera-Sauvignon Blanc 1
Petit Meslier 1
Roditis-Moschofilero 1
Tinta Madeira 1
Tempranillo-Malbec 1
Chardonel 1
Forcallà 1
Aidani 1
Biancolella 1
Meseguera 1
Irsai Oliver 1
Sideritis 1
Pinot Blanc-Pinot Noir 1
Paralleda 1
Tempranillo-Tannat 1
Garnacha-Cariñena 1
Torontel 1
Colorino 1
Valvin Muscat 1
Ojaleshi 1
Ryzlink Rýnský 1
Gamza 1
Schwartzriesling 1
Name: variety, Length: 707, dtype: int64

707個もvalueがあります。
これをreplaceで全て数値化するのか、
また、ワインに詳しくないこともあり、どのように数値化すればいいかも悩みどころです。

元ファイルはこちらにあります。
https://www.kaggle.com/zynicide/wine-reviews

ーーーーーー
追記で質問させてください。
descriptionコラムをクラシフィケーションしたいのですが、
それぞれの値を(0,1)の数値に分けるのにオススメの方法はありますでしょうか?
自然言語、でググってみましたが、どのようにやるか、までは書かれていなかったので、もし情報などありましたらシェアいただけると幸いです。

他のコラムに関しては(0,1)の数値に分けることは既に完了しました。アドバイスありがとうございました。

ご教示お願い致します。

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

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

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

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

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

guest

回答4

0

データをどうしたいかよってアプローチは変わると思います。

必要なデータだけ抽出する場合

私ならパーサーを書いてデータの前処理をさせつつ不要・不正なデータはバッサリ切って行きます。

なるべく多くのデータを残す場合

最近この本を読んだら言語はRでしたが、そのあたりの前処理についてよく書かれていました。ヒストグラムを見ながら端のデータを切ったりしてて、ああなるほどという内容だったので一読をおすすめします。(自分で説明できるくらいには消化していないので、おすすめだけです)

投稿2019/01/21 03:59

YouheiSakurai

総合スコア6142

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

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

trey_0329

2019/01/21 04:07

早速のご回答ありがとうございます。 パーサーについて知らなかったので、しっかり読みこんで理解します。
guest

0

カテゴリデータはすべてsklearnのOneHotEncoderに投げるのがおすすめです。

sklearn.preprocessing.OneHotEncoder — scikit-learn 0.20.2 documentation

カテゴリデータですらないもの(「tilte」とか怪しい)はさっさと捨てることになります。
(あるいは自然言語処理をかまして特徴量ベクトルに変換するか。「description」などそういうアプローチで処理すると良いのかもしれません。効くかどうかはタスク依存)

また、その場合は大量のゴミが混ざるので必要に応じて特徴選択してください。

投稿2019/01/21 03:58

編集2019/01/21 04:04
hayataka2049

総合スコア30933

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

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

trey_0329

2019/01/21 04:06

こんな機能があるとは知りませんでした。 早速使ってみます。 これだと、値を一つずつ、手作業で数値化する必要はないんですね
trey_0329

2019/01/21 17:17

descriptionの値を全て入手して、それをone hot encodingでクラス分けして、それを元のdataに置き換える、というイメージでよろしいでしょうか?
hayataka2049

2019/01/21 22:20

descriptionは単語に分割してBag of Wordsなどに変換したほうか良いでしょう
trey_0329

2019/01/22 03:12

ありがとうございます!
guest

0

ベストアンサー

「replaceする」の意味がよくわかりません。
例にあるようなカテゴリカル変数の場合0,1に直さないといけない場合があります。
また、ここは試行錯誤の問題になるかと思いますが、出現頻度の少ない変数は切り捨てるなどの処理が必要です。
機械学習の自然言語の取り扱い方
カテゴリかる変数の取り扱い方

投稿2019/01/21 03:50

編集2019/01/21 03:50
yamato_user

総合スコア2321

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

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

trey_0329

2019/01/21 04:04

replaceの意図は、文字で与えられた情報をreplace機能を使って自分の判断で点数化(数値化)しよう、ということでした。 自然言語の処理について知らなかったので、教えてくださったリンクはとてもためになります。 ありがとうございます、
guest

0

descriptionはdropすることにしました

投稿2019/01/22 09:01

trey_0329

総合スコア109

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問