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

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

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

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

2227閲覧

機械学習ValueErrorでURL文字列を読み込めない。

Rondon7251

総合スコア89

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2019/09/21 09:24

編集2019/09/21 11:43

機械学習で以下のコードとCSVファイルで以下のようなエラーが起きURLの文字列を読み込めません。
どうしたらURLの文字列を読み込んで学習することができますでしょうか。

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 読み込み --- (*1) analysisresults_data = pd.read_csv("analysis_resultsA.csv", encoding="utf-8") # ラベルと入力データに分離する --- (*2) y = analysisresults_data.loc[:,"Result"] x = analysisresults_data.loc[:,["Url"]] # 学習用とテスト用に分離する --- (*3) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, train_size = 0.7, shuffle = True) # 学習する --- (*4) clf = SVC() clf.fit(x_train, y_train) # 評価する --- (*5) y_pred = clf.predict(x_test) print("正解率 = " , accuracy_score(y_test, y_pred))

CSVファイル
イメージ説明

以下エラー内容
Traceback (most recent call last):
File "analysis_results.py", line 18, in <module>
clf.fit(x_train, y_train)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/svm/base.py", line 146, in fit
accept_large_sparse=False)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/utils/validation.py", line 719, in check_X_y
estimator=estimator)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/utils/validation.py", line 496, in check_array
array = np.asarray(array, dtype=dtype, order=order)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/numpy/core/numeric.py", line 538, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 'https://youtu.be/-XgdtHewGR0'

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

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

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

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

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

meg_

2019/09/21 10:58

エラーメッセージは全文掲載してください。(フォルダ名等はマスクしても結構です) また、質問のタグ付けは正確にした方が回答が付きやすいです。(今回の内容は”機械学習”は関係ないですよね)
nandymak

2019/09/21 11:15

アヤメの件と同じでは?
Rondon7251

2019/09/21 11:44

全文載せましたSVNで機械学習しているので関係あると思います。 アヤメの件解決してないです。
nandymak

2019/09/21 11:48

>ValueError: could not convert string to float: 'https://youtu.be/-XgdtHewGR0' アヤメと全く同じエラーですが、それを解決しないと幾ら手を広げても進めないと思います。 >SVNで機械学習しているので関係ある pythonのエラーなので、タグが間違っているのご指摘です。
siruku6

2019/09/21 13:14

>ValueError: could not convert string to float: 'https://youtu.be/-XgdtHewGR0&#039; 見た感じですが、 「x_train に入っているデータが文字列だから受け付けられないよ。floatに変換できるもん(数値データ)入れてよ」 とpythonが言っているように見えます。 そこに入れるデータがその状態でいいのかは確認されましたか??
nandymak

2019/09/22 01:13

>>SVNで機械学習しているので関係ある >pythonのエラーなので、タグが間違っているのご指摘です。 もし >clf.fit(x_train, y_train) の部分でエラーになってるのであれば機械学習(sklearn)の問題ですが、出ているエラーはpythonのエラーです。sklearnがエラーを出しているのであれば、その理由(推測)を以下に回答しました。
meg_

2019/09/22 07:10

当初エラー発生部分が不明だったため、Pandas部分でのエラーかと思っていました。失礼しました。
guest

回答1

0

ベストアンサー

私も機械学習は始めたばかりなので確定的に回答できませんが、
エラーメッセージから判断して、Train Dataは数値に置き換え出来る必要があると思われます。
以下の例でも、Train Dataは数値になっており、内部的にfloatに変換されて学習すると思われます。
思われるばかりですいません。

python

1>>> import numpy as np 2>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]]) 3>>> y = np.array([1, 1, 2, 2]) 4>>> from sklearn.svm import SVC 5>>> clf = SVC(gamma='auto') 6>>> clf.fit(X, y) 7SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, 8 decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf', 9 max_iter=-1, probability=False, random_state=None, shrinking=True, 10 tol=0.001, verbose=False) 11>>> print(clf.predict([[-0.8, -1]])) 12[1]

公式ドキュメントよりsklearn.svm.SVC scikit-learn 0.21.3 documentation

SVM(サポートベクターマシン)は線形二値分類のアルゴリズムなので、学習データにURLのような文字データが入ってきても分類できないと思われます。前処理として数値に置き換える(One-Hotエンコーディングなどいろいろあります)まどで、分類可能なデータにする必要があるのでしょう。

二次元である必要は無いでが、以下のようにデータをマッピングして1本の線を引くアルゴリズムなので、URLの状態では困難では無いでしょうか?
アヤメの件についても日付は分類するのには不要だと思われますが、もっとSVMの理解が必要だと思います。

イメージ説明

SVMについては以下の書籍が良書のようですが私は途中で断念しました。
サポートベクターマシン入門:共立出版

ヘルプを見ると「X : {array-like, sparse matrix」と有りますので、数値を要求していると思われます。

model.fit() Signature: model.fit(X, y, sample_weight=None) Docstring: Fit the SVM model according to the given training data. Parameters ---------- X : {array-like, sparse matrix}, shape (n_samples, n_features) Training vectors, where n_samples is the number of samples and n_features is the number of features. For kernel="precomputed", the expected shape of X is (n_samples, n_samples). y : array-like, shape (n_samples,) Target values (class labels in classification, real numbers in regression)

疎行列(そぎょうれつ、英: sparse matrix)とは、成分のほとんどが零である行列のことをいう。

投稿2019/09/22 00:43

nandymak

総合スコア799

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

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

Rondon7251

2019/09/22 06:39

とても参考になる解答ありがとうございます。 アルゴリズムをSVNからニューラルネットワークに変更してやってみようと思うのですがどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問