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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

機械学習

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

Python

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

Q&A

2回答

1152閲覧

数値を配列に変換し1次元の画像にする方法

aramisu

総合スコア6

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

機械学習

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

Python

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

0グッド

0クリップ

投稿2017/12/25 06:29

編集2017/12/25 07:24

###前提・実現したいこと
pythonで機械学習を勉強している初心者です。
現在こちらのサイトを参考にして、為替の機械学習について勉強しています。
(データの準備)段階の終値を画像に変換させるところを行いたいです。

###発生している問題・エラーメッセージ
参考サイトと同じように終値を取得し、画像へと変換させたいのですが、
変換ができていない状況です。
最終的には画像をスライドさせる段階まで行い、
学習させるためのデータセットの作成を行いたいと考えております。

画像変換のコードと変換結果 plt.imshow(x.reshape(1, -1), vmin=0.0, vmax=1.0,cmap='summer', interpolation='nearest')

![イメージ説明
###該当のソースコード

#ライブラリのインポート # -*- coding: utf-8 -*- import datetime import numpy as np import pandas as pd #import pandas_datareader.data as web import matplotlib.pyplot as plt import seaborn as sns from IPython.core.display import display #import urllib3 %matplotlib inline #為替データの読み込みと終値の取得 p=pd.read_csv("EUR.csv") df = pd.DataFrame(p) print(df) b="Close" x=df[b] #x=df[b] / df[b].max() print(x) x.plot() #画像への変換 plt.imshow(x.reshape(1, -1), vmin=0.0, vmax=1.0,cmap='summer', interpolation='nearest')

###補足情報(言語/FW/ツール等のバージョンなど)
[実行環境]
Win10 64bit
anaconda3(64)
jupyter notebook

[為替のデータ取得サイト]
FXDD
(会員登録が必要な為こちらで取得できるドル円のデータでも可能です)
会員登録が必要なのはこちらでした

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

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

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

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

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

guest

回答2

0

図を見る限り、1x2500 くらいのサイズの画像を表示しているわけですので、画像が潰れて線のように描画されるのはしょうがないかとおもいます。

修正する方法としては、imshow()extent 引数を渡すことで、画像を拡大/縮小することが出来ますので、画像の縦幅を横幅の 1/10 程度まで拡大してあげると良いかと思います。(この比率は好みに応じて適当に設定してください)
またこの際のY軸のラベル値は全く無意味な値なので、非表示にしておいたほうが良いかもしれません。

以下にサンプルを書きましたので、参考にしてください。

Python

1b = 'Close' 2x=df[b] / df[b].max() 3ax = plt.subplot() 4ax.imshow(x.reshape(1, -1), vmin=0.0, vmax=1.0, cmap='summer', interpolation='nearest', extent=(0,len(x),0,len(x)/10)) 5ax.get_yaxis().set_visible(False) 6ax.set_xticks(range(len(data.columns))) 7 8plt.show()

できれば、横軸も数字ではなく時系列データにしたいところですが・・。

投稿2017/12/27 04:20

magichan

総合スコア15898

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

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

0

データ数=画像の幅なので、データが増えると画像の幅も増えていきますが、その画像を、生成(もしくは表示)する幅に収めようとすると画像全体を圧縮することになり、縦方向は潰れてしまいます。
例えば、10000×20の画像の幅を500にしようとすると500x1になる、ということです。
一度、データ数を減らして試してみて下さい。(10〜20程度)

それに加えて、imshow引数でvmin=0.0, vmax=1.0が指定されているので、データを0.0~1.0に正規化しないといけません。それっぽい処理をコメントアウトしていますが、

python

1#x=df[b] / df[b].max() 2#↓ 3x = (x - x.min()) / (x.max() - x.min())

でいけるんじゃないかと思います。

もしくは、xはそのままで、vmin=0.0, vmax=1.0を削除して正規化をimshowに任せてしまうか。

投稿2017/12/26 02:16

fuzzball

総合スコア16731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問