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

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

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

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

Q&A

解決済

1回答

412閲覧

Google Colaboratoryでファイルからデータ参照

00_x9925

総合スコア12

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

0グッド

0クリップ

投稿2020/06/12 11:14

編集2020/06/12 12:10

`Google Collaboratoryに関する質問です.
以下はirisというデータセットを用いて最近傍法(K-nn法)というデータ分類を行うプログラムです.
この際,肝心のirisデータセットはライブラリに付属している検証用のものなので特にファイルをインクルードしているわけではないです.

python

1import numpy as np 2import matplotlib.pyplot as plt 3from sklearn.datasets import load_iris 4from sklearn.neighbors import KNeighborsClassifier 5from sklearn.model_selection import cross_val_predict 6from sklearn.model_selection import cross_val_score 7from sklearn.metrics import confusion_matrix 8 9iris = load_iris() 10X = iris.data 11y = iris.target 12 13knn = KNeighborsClassifier(n_neighbors=3) 14y_pred = cross_val_predict(knn, X, y, cv=10) 15confusion_matrix(y, y_pred)

ここで質問なのですが,このプログラムをファイルからデータセットを読み込んで実行する形式に変更したいのですが,どうすればよいでしょうか? 下に自分が試したコードを記します.
これではエラーが出ます. どう修正すればよいでしょうか?

python

1import numpy as np 2import matplotlib.pyplot as plt 3from sklearn.neighbors import KNeighborsClassifier 4from sklearn.model_selection import cross_val_predict 5from sklearn.model_selection import cross_val_score 6from sklearn.metrics import confusion_matrix 7 8with open('drive/My Drive/iris.txt', 'r', encoding='utf-8') as iris: 9 10 X = iris.data 11 y = iris.target 12 13 knn = KNeighborsClassifier(n_neighbors=3) 14 y_pred = cross_val_predict(knn, X, y, cv=10) 15 confusion_matrix(y, y_pred)

error

1AttributeError Traceback (most recent call last) 2<ipython-input-12-10dee33ee058> in <module>() 3 8 with open('drive/My Drive/iris.txt', 'r', encoding='utf-8') as iris: 4 9 5---> 10 X = iris.data 6 11 y = iris.target 7 12 8 9AttributeError: '_io.TextIOWrapper' object has no attribute 'data'

iris.txt

15.1 3.5 1.4 0.2 1.0 24.9 3.0 1.4 0.2 1.0 34.7 3.2 1.3 0.2 1.0 44.6 3.1 1.5 0.2 1.0 55.0 3.6 1.4 0.2 1.0 65.4 3.9 1.7 0.4 1.0 74.6 3.4 1.4 0.3 1.0 85.0 3.4 1.5 0.2 1.0 94.4 2.9 1.4 0.2 1.0 104.9 3.1 1.5 0.1 1.0 115.4 3.7 1.5 0.2 1.0 124.8 3.4 1.6 0.2 1.0 134.8 3.0 1.4 0.1 1.0 144.3 3.0 1.1 0.1 1.0 155.8 4.0 1.2 0.2 1.0 165.7 4.4 1.5 0.4 1.0 175.4 3.9 1.3 0.4 1.0 185.1 3.5 1.4 0.3 1.0 195.7 3.8 1.7 0.3 1.0 205.1 3.8 1.5 0.3 1.0 215.4 3.4 1.7 0.2 1.0 225.1 3.7 1.5 0.4 1.0 234.6 3.6 1.0 0.2 1.0 245.1 3.3 1.7 0.5 1.0 254.8 3.4 1.9 0.2 1.0 265.0 3.0 1.6 0.2 1.0 275.0 3.4 1.6 0.4 1.0 285.2 3.5 1.5 0.2 1.0 295.2 3.4 1.4 0.2 1.0 304.7 3.2 1.6 0.2 1.0 314.8 3.1 1.6 0.2 1.0 325.4 3.4 1.5 0.4 1.0 335.2 4.1 1.5 0.1 1.0 345.5 4.2 1.4 0.2 1.0 354.9 3.1 1.5 0.2 1.0 365.0 3.2 1.2 0.2 1.0 375.5 3.5 1.3 0.2 1.0 384.9 3.6 1.4 0.1 1.0 394.4 3.0 1.3 0.2 1.0 405.1 3.4 1.5 0.2 1.0 415.0 3.5 1.3 0.3 1.0 424.5 2.3 1.3 0.3 1.0 434.4 3.2 1.3 0.2 1.0 445.0 3.5 1.6 0.6 1.0 455.1 3.8 1.9 0.4 1.0 464.8 3.0 1.4 0.3 1.0 475.1 3.8 1.6 0.2 1.0 484.6 3.2 1.4 0.2 1.0 495.3 3.7 1.5 0.2 1.0 505.0 3.3 1.4 0.2 1.0 517.0 3.2 4.7 1.4 2.0 526.4 3.2 4.5 1.5 2.0 536.9 3.1 4.9 1.5 2.0 545.5 2.3 4.0 1.3 2.0 556.5 2.8 4.6 1.5 2.0 565.7 2.8 4.5 1.3 2.0 576.3 3.3 4.7 1.6 2.0 584.9 2.4 3.3 1.0 2.0 596.6 2.9 4.6 1.3 2.0 605.2 2.7 3.9 1.4 2.0 615.0 2.0 3.5 1.0 2.0 625.9 3.0 4.2 1.5 2.0 636.0 2.2 4.0 1.0 2.0 646.1 2.9 4.7 1.4 2.0 655.6 2.9 3.6 1.3 2.0 666.7 3.1 4.5 1.4 2.0 674.6 3.0 4.5 1.5 2.0 685.8 2.7 4.1 1.0 2.0 696.2 2.2 4.5 1.5 2.0 705.6 2.5 3.9 1.1 2.0 715.9 3.2 4.8 1.8 2.0 726.1 2.8 4.0 1.3 2.0 736.3 2.5 4.9 1.5 2.0 746.1 2.8 4.7 1.2 2.0 756.4 2.9 4.3 1.3 2.0 766.6 3.0 4.9 1.4 2.0 776.8 2.8 4.8 1.4 2.0 786.7 3.0 5.0 1.7 2.0 796.0 2.9 4.5 1.5 2.0 805.7 2.6 3.5 1.0 2.0 815.5 2.4 3.8 1.1 2.0 825.5 2.4 3.7 1.0 2.0 835.8 2.7 3.9 1.2 2.0 846.0 2.7 5.1 1.6 2.0 855.4 3.0 4.5 1.5 2.0 866.0 3.4 4.5 1.6 2.0 876.7 3.1 4.7 1.5 2.0 886.3 2.3 4.4 1.3 2.0 895.6 3.0 4.1 1.3 2.0 905.5 2.5 4.0 1.3 2.0 915.5 2.6 4.4 1.2 2.0 926.1 3.0 4.6 1.4 2.0 935.8 2.6 4.0 1.2 2.0 945.0 2.3 3.3 1.0 2.0 955.6 2.7 4.2 1.3 2.0 965.7 3.0 4.2 1.2 2.0 975.7 2.9 4.2 1.3 2.0 986.2 2.9 4.3 1.3 2.0 995.1 2.5 3.0 1.1 2.0 1005.7 2.8 4.1 1.3 2.0 1016.3 3.3 6.0 2.5 3.0 1025.8 2.7 5.1 1.9 3.0 1037.1 3.0 5.9 2.1 3.0 1046.3 2.9 5.6 1.8 3.0 1056.5 3.0 5.8 2.2 3.0 1067.6 3.0 6.6 2.1 3.0 1074.9 2.5 4.5 1.7 3.0 1087.3 2.9 6.3 1.8 3.0 1096.7 2.5 5.8 1.8 3.0 1107.2 3.6 6.1 2.5 3.0 1116.5 3.2 5.1 2.0 3.0 1126.4 2.7 5.3 1.9 3.0 1136.8 3.0 5.5 2.1 3.0 1145.7 2.5 5.0 2.0 3.0 1155.8 2.8 5.1 2.4 3.0 1166.4 3.2 5.3 2.3 3.0 1176.5 3.0 5.5 1.8 3.0 1187.7 3.8 6.7 2.2 3.0 1197.7 2.6 6.9 2.3 3.0 1206.0 2.2 5.0 1.5 3.0 1216.9 3.2 5.7 2.3 3.0 1225.6 2.8 4.9 2.0 3.0 1237.7 2.8 6.7 2.0 3.0 1246.3 2.7 4.9 1.8 3.0 1256.7 3.3 5.7 2.1 3.0 1267.2 3.2 6.0 1.8 3.0 1276.2 2.8 4.8 1.8 3.0 1286.1 3.0 4.9 1.8 3.0 1296.4 2.8 5.6 2.1 3.0 1307.2 3.0 5.8 1.6 3.0 1317.4 2.8 6.1 1.9 3.0 1327.9 3.8 6.4 2.0 3.0 1336.4 2.8 5.6 2.2 3.0 1346.3 2.8 5.1 1.5 3.0 1356.1 2.6 5.6 1.4 3.0 1367.7 3.0 6.1 2.3 3.0 1376.3 3.4 5.6 2.4 3.0 1386.4 3.1 5.5 1.8 3.0 1396.0 3.0 4.8 1.8 3.0 1406.9 3.1 5.4 2.1 3.0 1416.7 3.1 5.6 2.4 3.0 1426.9 3.1 5.1 2.3 3.0 1435.8 2.7 5.1 1.9 3.0 1446.8 3.2 5.9 2.3 3.0 1456.7 3.3 5.7 2.5 3.0 1466.7 3.0 5.2 2.3 3.0 1476.3 2.5 5.0 1.9 3.0 1486.5 3.0 5.2 2.0 3.0 1496.2 3.4 5.4 2.3 3.0 1505.0 3.0 5.1 1.8 3.0 151

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

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

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

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

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

meg_

2020/06/12 11:37

テキストファイルからデータを読みだして学習データとラベルに分ける処理は自身で書かなければなりません。まずはテキストファイルからデータを読み込みましょう。
yymmt

2020/06/12 11:49

iris.txtの内容を先頭5行程度で良いので示すことは可能でしょうか?よりよいアドバイスが貰えると思います。
00_x9925

2020/06/12 12:12

iris.txtの中身を載せました ちなみに左から順に,irisのがく片の長さ,がく片の幅,花弁の長さ,花弁の幅,品種(3種類)です
guest

回答1

0

ベストアンサー

pandasを使うのが簡単です。

python

1import pandas as pd 2 3df = pd.read_csv('drive/My Drive/iris.txt', delim_whitespace=True, header=None) 4X = df.iloc[:, 0:4] 5y = df.iloc[:, 4]

投稿2020/06/12 12:20

yymmt

総合スコア1615

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

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

00_x9925

2020/06/12 13:20

X = df.iloc[:, 0:4]は要素0~要素4という意味ですよね? では y = df.iloc[:, 4]はどういう意味ですか? またこれを,どう使って最初に記載したプログラムと同じ動作をさせることが出来ますか?
yymmt

2020/06/12 13:26

> X = df.iloc[:, 0:4]は要素0~要素4という意味ですよね? 違います。0:4はスライスといいまして、要素0~要素3です。 > y = df.iloc[:, 4]はどういう意味ですか? 要素4のことです。 > またこれを,どう使って最初に記載したプログラムと同じ動作をさせることが出来ますか? 最初に記載されているソースコードの下記の部分を本コードに入れ替えるだけで動くと思います。 > iris = load_iris() > X = iris.data > y = iris.target
00_x9925

2020/06/12 13:36

すいません,最初なぜかいけなかったんですが, 自分のバカみたいなミスでエラーが出てただけでした...w 無事いけました. ありがとうございます!
00_x9925

2020/06/12 15:02

ちなみにX = df.iloc[:, 0:4]の部分を変えることで,参照する要素数を減らそうとしたのですがなぜかできません. どうすればいいかわかりますか? 例えばがく片の長さの列だけを参照して分類する,とかがやりたい時などです... X = df.iloc[:, 0]じゃできませんでした.
yymmt

2020/06/12 15:29

入力となる配列Xのshapeが違うためと思われます。 print(X.shape)としてみるとその違いが分かると思います。 X = df.iloc[:, 0:1]とすると上手くいくのではないでしょうか。 あるいは 強制的にpandasの列(Seriesと言います)をnumpyの配列(ndarray)に変換した上で、配列の形状を変えても良いと思います。 X = df.iloc[:, 0] X = X.values.reshape(-1, 1)
00_x9925

2020/06/13 12:05

なるほど X = df.iloc[:, 0:1]でいいんですね... ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問