• 締切済み

python解説本の機械学習サンプルコードについて

pythonの本巻末近くで総集編として機械学習のサンプルコードが示されることが多いと思います。 私もその辺まで学習をすすめてきたのでやってみると、思うように動作しません。 pythonのコードではコード中からネットにアクセスしてファイルをダウンロードするということのようです。実際にやってみるとサイトからファイルをダウンロードできない(ホストが応答しない)と表示されます。サイトが現存することは確認しました。データもありそうです。サイト更新等の確認も必要ですが、そもそもpythonのコードがどうなっているのかということです。関連する部分は以下の2行のようです。 from sklearn import datasets, ... ... mnist = datasets.fetch_mldata('MNIST original', data_home='.') ... ...の部分はほぼ関係ないと言えると思います(printとかですから)。これだけでサイトのURLとかデータの情報(ファイル名とか)が言い尽くされているとは思えないのですが。'MNIST orijinal'というところに対応したURLを手入力するってことなのでしょうか。scikit-learnのdatasetsと言うものが裏側でダウンロード情報を持っており、それが実体と齟齬を生じているということでしょうか。 pythonはライブラリとかを使うのでそれを呼び出して進めていくのですが、このようなやっても動かないという問題にすぐ遭遇するし、自分で全くエディットしていないので(つまりある意味ひとまかせ)、対処が分かりずらいということにもなるのでしょうか。 よろしくお願いします。

  • Python
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

いろいろお察しします。(こちらのことはお察しください・・・) とりあえず、このへんご参考にならんでしょうか。 https://github.com/YutaroOgawa/Deep-Reinforcement-Learning-Book/issues/4 取り急ぎ。

skmsk1941093
質問者

お礼

回答ありがとうございます。以下雑感なのですが、これだけ本やサイトが乱立し、環境も進化し、ユーザの背景も千差万別、深層学習の御大のシステムもどんどん更新していくと、解説書・解説サイトにちょこちょこと綻びがでるのは仕方がないと思っています。そのことを挙げてアマゾンで批判されているのを見ることがありますが、私はあまり気にしません。それよりも目線が読者側に立っているかどうかは大きいと思っています。多分この辺でつっかえるとかの見通しです。読者としては頭の中でやっていることが大雑把にでもマッピングができて、あの辺はここだな、みたいなことがわかるようになりたいと思います(大雑把にわかりたい)。機械・深層学習はすべてpythonのライブラリ(?)の中身を見せない状態でただ(正しく)呼び出して使ってくれっというのばかりだと思います。こちらの意図(使用者)と受け側(作成者)の意図が違うということはないということは信じるしかないのですが。いつもこれ、正しく使えているのかな?という不安を払拭できません。話がそれてしまいました。すみません。

  • f272
  • ベストアンサー率46% (7994/17082)
回答No.1

from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784', version=1,) のようにfetch_openmlを使ったらどうですか?

skmsk1941093
質問者

お礼

回答ありがとうございました。今、ここでは確かめられないので帰宅してからやってみます。 このような変更はネット上に出ているのでしょうか。正誤表とかみたいな感じで。どうでしょうか。

関連するQ&A

  • Python ==について コードのいみが不明

    Pythonを学習中の大学生です。講義でひたすらコードを写経する課題が出たのですが、df0=df.query('time=="Lunch"') というコードがあり、説明にはdf0にLunchのデータを格納すると書いてありましたが、()内のいみがよくわかりません。 オンライン授業のため先生に質問をし忘れたため、ここで質問させていただきます。宜しくお願いします。 データファイルは写真のようなものです、

  • Python学習サイトをご存知ありましたら

    Pytho入門として、Hallo world から 下記サイトで基礎的な関数などを勉強しました。 https://www.pythonweb.jp/tutorial/ 次のステップとして良い学習サイトがありましたらご紹介ください。 よろしくお願いします。 _____ これまでアプリケーションを作成するようなプログラミングの経験はなく、HTMLやFlashAS、PHP、JavaScriptなどのスクリプトの経験はあるといった具合です。 Pythoで、いずれ機械学習なんかでデータから次を予測するようなことをしてみたいと考えています。 Python 2.7 Mac OS X 10.11 環境です。

  • Python codeのcron実行

    QPKGでPythonをダウンロードした後、 http://stackoverflow.com/questions/4460262/running-a-python-script-with-cron を参考に、 (1)Python codeの先頭に[!/usr/bin/env python]を付け (2)chmod +xで実行可能にし、 (3)crontab -e にて1分毎に実行させるようにした のですが1分毎にファイルが作成されません。pythonのコードの保存場所でも間違っているのでしょうか? ※以下にあるpathのQNAPDriveはQnap NASで作成した仮想ドライブ(M:\)です。 (1)コード名[P20_time.py]。実行させると、ファイル名と保存内容が[2014-04-14T11-25-39]のようになり、M driveに保存されるプログラム。EclipseのPydevにて動作確認済み。 #!/usr/bin/env python import datetime D = datetime.datetime.today().strftime("%Y-%m-%dT%H-%M-%S") File_Path = "M:\\" + str(D) + '.txt' F = open(File_Path, 'w') F.write(str(D)) F.close() (2)chmod +xで実行可能にした後、ls -laでパーミッションを確認 -rwxrwxrwx 1 admin administ 209 Apr 13 14:25 P20_time.py* (3)[crontab -e]で編集後、[crontab -l]で表示した内容 01 * * * * /share/QNAPDrive/P20_time.py 作業環境:QNAP NAS TS-212、Windows 7 ―――――――――――――――――――――――――――――――― なお、QNAPのサポートセンターに上記のような質問をした所、 I tried to run your script commands manually in Python command line. But first line will fail: >>> import datetime Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named datetime Maybe you need to install the Python module for your script to work. とあり、プログラム自身がおかしいと指摘されました。ただ、Tera Termを使ってcommand lineで import datetime と入力しても問題なかったです。もうはっきし言ってお手上げです。どなたか御教授頂けるよう、よろしくおねがいします。

  • 【python】機械学習(教師あり)画像認識にて

    調べてもどうしてもわからない部分が有り すいませんが質問させていただきます。 【目的】 薬品容器を認識して容器の数を数えたい。 ※機械学習(教師あり)にて容器の認識をしたいと考えております。 モデル学習する前にデータセットとして 薬品容器のアノテーション作業をLabelMEというツールで 容器のアノテーションを行い、ラベル付けしてjsonファイルにて保存しました。 (デスクトップの機械学習というフォルダにjsonファイル入れています。) 【質問】 このデータセットというのは アノテーションした後のjsonファイルのみあれば モデルの学習はできるのでしょうか? モデル学習のコードを組んでみたのですが エラーが出てしまい具体的には、アノテーションデータに 'image_path' が存在しないとの事でした。 ・画像データが欲しいってことですか?  この場合jsonファイルと元画像jpegがあればモデルの学習が  出来るのですか? 実行時 Loaded dataset from 133 JSON files. Total samples in the dataset: 0 と出るので、データセットの中身が0と出ているような気がします。 コード一応貼ります。 import os import json import cv2 import numpy as np from sklearn.model_selection import train_test_split from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.applications import VGG16 from tensorflow.keras.preprocessing.image import ImageDataGenerator # データセットのパス json_folder_path = r'C:\Users\Desktop\機械学習' # データセットの読み込み def load_dataset(folder_path): dataset = [] for filename in os.listdir(folder_path): if filename.endswith(".json"): file_path = os.path.join(folder_path, filename) with open(file_path, 'r') as file: data = json.load(file) dataset.append(data) # appendを使用してリストに追加 # アノテーションデータを表示 print(f"Loaded dataset from {len(dataset)} JSON files.") return dataset # データセットの整形 def preprocess_dataset(dataset): images = [] boxes = [] for data in dataset: # 'image_path'が存在する場合のみ処理を行うように修正 if 'image_path' in data: image_path = data['image_path'] label = data.get('label', None) # 'label'が存在しない場合はNoneを返す box = data.get('box', None) # 'box'が存在しない場合はNoneを返す if label and box: image = cv2.imread(image_path) # OpenCVを使用して画像を読み込む images.append(image) boxes.append(box) return np.array(images), np.array(boxes) # データ拡張の設定 datagen = ImageDataGenerator( rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest' ) # メインの実行部分 if __name__ == "__main__": # データセットの読み込み dataset = load_dataset(json_folder_path) # データセットの整形 images, boxes = preprocess_dataset(dataset) # データセットのサイズを確認 print(f"Total samples in the dataset: {len(images)}") # 訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split(images, boxes, test_size=0.2, random_state=42) # データ拡張を適用 for i in range(len(X_train)): img = X_train[i] box = y_train[i] img = np.expand_dims(img, axis=0) box = np.expand_dims(box, axis=0) for j, (img_aug, box_aug) in enumerate(zip(datagen.flow(img, box), datagen.flow(box, box))): if j == 1: # 1回目のデータ拡張だけを適用 X_train = np.vstack((X_train, img_aug)) y_train = np.vstack((y_train, box_aug)) break # モデルの構築(VGG16を利用した転移学習) base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) base_model.trainable = False model = keras.Sequential([ base_model, layers.Flatten(), layers.Dense(256, activation='relu'), layers.Dense(4) # 出力層のノード数は物体の座標情報による ]) # モデルのコンパイル model.compile(optimizer='adam', loss='mean_squared_error') # モデルのトレーニング model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test)) # テストデータでの評価 test_loss = model.evaluate(X_test, y_test) print(f"Test Loss: {test_loss}")

  • pythonについて

    私はプログラミングに興味があってmacでpython2.7を使っています。 python2.7でプログラムをファイルを書く方法が分かりません。 また、 python専用の本を持ってるのですが、「test.py」という部分があります。 “テキストエディット”、“AppleScript エディット”で保存するをクリックして 名前を「test、py」にできないのですが「test.py」にする必要はないのでしょうか? どなたかやり方を教えてください。

  • サンプルコードがコンパイルできません

    動画配信(ストリーミング配信)がやりたいと思い、 JMFを以下のサイトからダウンロードして、 http://java.sun.com/products/java-media/jmf/2.1.1/download.html JMFのサンプルコードを以下のサイトからダウンロードして、コンパイルしましたが、 うまくコンパイルできません。 ダウンロードしたサンプルは「RTPPlayerApplet」「RTPSocketPlayer」です。 http://java.sun.com/products/java-media/jmf/2.1.1/samples/samplecode.html 「RTPPlayerApplet」の方は、コンパイルすると、「パッケージRTPは存在しません」というエラーがでます。 import rtp.*;の部分がひっかかってるみたいです。 しかし、rtpパッケージをどこで入手すればよいのかわかりません。 ダウンロードのページにはそのことについて、なにも書いてないようにおもうのですが、 英語なのでよくわかりません。 また、「RTPSocketPlayer」の方は、コンパイルすると「推奨されないAPIを使用またはオーバーライドしています」という警告が出ます。 JMFのAPI(http://java.sun.com/products/java-media/jmf/2.1.1/specdownload.html) を見てみても、javax.media.rtp.RTPSocketは推奨されないクラスと書いてないような気がするんですが、これも英語なのでよくわかりません。 結局うまくテストできない状態です。 Vectorの以下のページから、Webカメラ用のサーバプログラムをダウンロードして、 http://www.vector.co.jp/soft/winnt/net/se344733.html Webカメラをlocalhostで9999ポートで作動させて待ち状態にさせてから、 正常にコンパイルできているかわからない「RTPSocketPlayer」を、 「java RTPSocketPlayer」として起動してもエラーが出てうまく動作しません。 この原因もわかりません。 分からないことばかりで申し訳ないのですが、わかる方アドバイス御願いいたします。

    • ベストアンサー
    • Java
  • Winmapの解説サイト・参考本

    MP3ファイルを取り扱おうと思い、ネット上から Winmapをダウンロードしてきました。 しかし、ソフトはすべて英語になっていて操作方法が いまいちわかりません。 ネット上のサイトかもしくは本でWinmapについて 詳しく解説されているものをご存知ないでしょうか? Winmap上で音楽CDのデータをMP3データに 変換する操作などが書かれていれば嬉しいのですが。 宜しくお願いします。

  • rubyのサンプルコードの起動について

    Rubyのサンプルコードの起動方法についてお聞きしたいです。 現在、「アンダースタンディング・コンピレーション」という本のサンプルコードをダウンロードし、irbを用いて実行しながら学習しようと考えています。 しかし、irbを用いてrbファイルを起動したのですが以下のエラーがでて上手く行きません。 /home/vagrant/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- execjs/json (LoadError) from /home/vagrant/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /vagrant/share/computationbook/the_meaning_of_programs/denotational/assign.rb:1:in `<top (required)>' from /vagrant/share/computationbook/the_meaning_of_programs/denotational.rb:2:in `require_relative' from /vagrant/share/computationbook/the_meaning_of_programs/denotational.rb:2:in `<top (required)>' from the_meaning_of_programs.rb:2:in `require_relative' from the_meaning_of_programs.rb:2:in `<main>' メッセージを見たところ、requireで問題が起こっているようなのですが、 パスなどにも問題があるようには見えず。行き詰っています。 irbで実行したファイルの内容は、間接的に複数のファイルをrequireで読み込むものです。 また、その際のパスは相対パスで記述されいてるようです。 当方、Ruby初心者なのでirbやrubyの根本的な使用方法に誤りがあるかもしれません。 エラーに見覚えのある方、 アンダースタンディング・コンピレーションをサンプルコードから学習した方 などいらっしゃいましたら,助言いただければ幸いです。

  • Pythonの機械学習のコードでエラーが消えません

    https://www.youtube.com/watch?v=L4f6KGgX4xI 上の動画を元にプログラムを書き、 部分ごとに分割して動作させてみたりして エラーを消していったんですが、最後に残った ---> 60 elif total_list[odd]-total_list[even] < 0: 61 delta_gosa = total_list[odd]-total_list[even]#誤差の合計の変化量を出すため、total_list を使う。 62 h += 0.001 * abs(delta_gosa) IndexError: list index out of range というエラーがどうしても消えません。 h = 0 n = 1 total_list = [] という部分より上の部分はエラーが出ずに動く事を確認し、 次にこの部分以下と同じ構造のループを持つ文を書いた時に上手くいったのに、 これらをつなげて動かすとエラーメッセージが出てきます。 (インデントは全角スペースで表現しています) def random_leaner():  gari_highth_list = []  gari_mass_list = []  gari_num = len(gari_mass_list)  debu_highth_list = []  debu_mass_list = []  debu_num = len(debu_mass_list)  for i in range(90):   from random import randint   highth = randint(130,190)   mass = randint(30,90)   if highth/mass > 17/5 :    gari_highth_list.append(highth)    gari_mass_list.append(mass)   else:    debu_highth_list.append(highth)    debu_mass_list.append(mass)  gari_highth_max = max(gari_highth_list)#ガリの高さ最大値と体重最大値が同じになるよう補正  gari_mass_max = max(gari_mass_list)  k_for_gari = gari_highth_max / gari_mass_max  debu_highth_max = max(debu_highth_list)#デブの高さ最大値と体重最大値が同じになるよう補正  debu_mass_max = max(debu_mass_list)  k_for_debu = debu_highth_max / debu_mass_max  h = 0  n = 1  total_list = []  big_num = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  for tnt in range(1,big_num): # while True にしたかったんですが、繰り返し変数を利用したかったので big_num で代用します。   odd = 2*tnt-3   even = 2*tnt-4   gari_GOSA_total = 0   for num in range(0,gari_num+1):    #(190ー背の高さ)+(90-体重の重さ)を出し、nを掛けて h”を”引いている    gari_GOSA = (280 - gari_highth_list[num] - gari_mass_list[num]*k_for_gari)*n - h    gari_GOSA_total += gari_GOSA   debu_GOSA_total = 0   for num in range(0,debu_num+1):    #(190ー背の高さ)+(90-体重の重さ)を出し、nを掛けて h”から”引いている    debu_GOSA = h - (280 - debu_highth_list[num] - debu_highth_list[num]*k_for_debu)*n    debu_GOSA_total += debu_GOSA   total_list.append(gari_GOSA_total + debu_GOSA_total)   if tnt == 1:# hを少し変化させ、誤差の合計が減ったかどうか調べる。    h += 0.001    n += 0.001   elif total_list[odd]-total_list[even] < 0:    delta_gosa = total_list[odd]-total_list[even]#誤差の合計の変化量を出すため、total_list を使う。    h += 0.001 * abs(delta_gosa)    n += 0.001 * abs(delta_gosa)   elif total_list[odd]-total_list[even] > 0:    delta_gosa = total_list[odd]-total_list[even]    h -= 0.001 * abs(delta_gosa)    n -= 0.001 * abs(delta_gosa)   else:    print(h,n)    print(gari_highth_list)    print(total_list)    break random_leaner()

  • リンクがうまくいかない。解説本

    ムーバブルタイプを最近勉強することになりがんばっているのですが、CMSとして使うMovable Typeガイドブック」という本を購入し、できるだけそのまま作っているのですが、なかなかうまくいきません。 コーポレートサイトを作っているのですが、 http://botaneko.chu.jp/botaneko_web_dezign/ テストサーバーにいれて試しているのですがこのようになりました。ほぼ完成しているのですが、グローバルメニューのリンクが切れているのです。 ヘッダー部分のテンプレートがおかしいのかと見てみましたが特におかしくはなく、カテゴリー名などがおかしいのかフォルダー名はファイル名がおかしいのかと確認してみましたがおかしくないように思います。 確かにリンク部分がおかしいのはわかるのですが・・・。(グローバルメニューのリンク部分にカーソルを当てるとリンク先が表示されますが、それをみると明らかに変なリンクが表示されます。) どこがおかしいのかわかる方、もしくは同じ解説本にてMT4・2で作ったことのあるかた教えてください。 かなり悩んでおります。