tata色々な備忘録

データ解析、画像解析、化学分析などなど

tensorflowとcupyのwindows環境インストール(cuDNN、CUDA)(2018/1/21時点の情報)

cuDNN7でpython3.6とCUDA9.1に対応。インストールが簡単になった。

1. CUDAを下記から落としてインストール

CUDA (現時点では9.1が最新)

https://developer.nvidia.com/cuda-downloads

2. cuDNNを下記から落とす。

(7以上のwindows版を選択。CUDAのバージョンに揃える)
cuDNN

https://developer.nvidia.com/rdp/form/cudnn-download-survey

3. cuDNNを展開し下記フォルダに入れる

(末尾の数値はバージョンに合わせて適宜変更)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1

4. 下記サイトでVisual C++ Build Tools 2015をインストール

Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)

cuDNNはVS2017には対応していないので注意

5. 環境変数に下記を設定

(CUDAの後の番号はバージョンに応じて適宜変更)
INCLUDE
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin
PATH
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

6. pip install

pip install cupy
pip install tensorflow-gpu

終わり

RDkitのインストールとPycharm用の設定

ケムイオンフォマティクス用のツールキット、
RDkitのインストールとPycharmの設定に苦労したのでメモ

公式の通りにインストールするとimport Errorで苦しむので注意

(自己紹介)

1. Anacondaをインストール

www.anaconda.com

2. Anacondaプロンプトに下記のコマンドを入力

$ conda install -c rdkit rdkit 

3. Pycharmのワーキングディレクトリ変更

run⇒Edit configuration ⇒working directory
C:\ProgramData\Anaconda3
に設定

参考

Rdkit :: Anaconda Cloud

以上

tensorflowとcupyのwindows環境インストール(cuDNN、CUDA)(2017/10/27時点の情報)

古い情報です。下記に更新しました

tatabox.hatenablog.com

1. CUDAを下記から落としてインストール

CUDA (9はwindowsで動かないので8台を選択) https://developer.nvidia.com/cuda-downloads

2. cuDNNを下記から落とす。

(6以上のwindows版を選択)
cuDNN

https://developer.nvidia.com/rdp/form/cudnn-download-survey

3. cuDNNを展開し下記フォルダに入れる

(末尾の数値はバージョンに合わせて適宜変更)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

4. 下記サイトでVisual C++ Build Tools 2015をインストール

Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)

cuDNNはVS2017には対応していないので注意

5. 環境変数に下記を設定

(CUDAの後の番号はバージョンに応じて適宜変更)
INCLUDE
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
PATH
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

6 Pythonを3.5.2 にダウングレード

Anaconda Prompt を起動してconda install python=3.5.2 と入力。
tensorflowが3.6に対応していないため。

7. pip install

pip install cupy
pip install tensorflow-gpu

まあ、Ubuntuが楽ですね、という話でした。

10分でPythonの科学計算環境構築(anaconda+ Visual Studio Code)

10分で科学計算+pythonのコーディング環境構築(自動補完)まで。

anacondaとVisual Studio Codeの組み合わせになる。
Visual Studio Code(VScode)はMS製のIDEだがmaclinuxでも動く。
Markdownでも優秀なツールであり、少しマイナーだがお勧め。

環境構築10分はダウンロード時間を除く。
確認はWindows10だが、maclinuxも同じ手順、時間で行ける。

1.anacondaのインストー

Download Anaconda Now! | Continuum

2.Visual Studio Code(VScode)のインストー

code.visualstudio.com

3.Visual Studio Codeの設定

python用設定のインストール (下図のようこそ→pythonをクリック→はい)

f:id:tatabox2000:20170717001559p:plain

② フォルダに移動(どこでも良い)

f:id:tatabox2000:20170716235640p:plain

③ 設定を選ぶ

f:id:tatabox2000:20170716235715p:plain

④ 図の通りに書き換える
1) python.pythonpathで検索
2) “python.pythonPath"を選ぶ
3) ワークスペース設定を選ぶ
4) ワークスペースの"python.pythonPath"に下記内容を記載
"python.pythonPath”: “C:\ProgramData\Anaconda3\python.exe” “python.autoComplete.extraPaths”: [“C:\ProgramData\Anaconda3\Lib\site-packages”
],"

f:id:tatabox2000:20170716235814p:plain

⑤ (゚д゚)ウマー(実行はctrl+F5)

Code runnerという拡張を入れると右クリックから実行可能。
便利な世の中になったものだ。

Python3.6にOpenCVをインストール(windows10)

忘れそうなのでメモ書き。
(現状のOpenCVはpython3.5までしか対応していない)

1.Anacondaでpython3.6を入れる。
Download Anaconda Now! | Continuum

2.conda-forge/opencv-feedstockを入れる
github.com

手順(コマンドプロンプト
conda config --add channels conda-forge  
conda install opencv  

普通に使えて(゚д゚)ウマー

conda-forgeの皆様に感謝

Pythonで株・為替・先物解析 その1

Pythonで株・為替・先物解析の解析をしてみる。
そのままmatplotlibで描画すると土日祝日が空欄になるため、軸を別設定した。

import jsm
import datetime
import pandas as pd
import matplotlib.dates as mdate
import matplotlib.finance
import pylab as plt
import numpy as np
import sqlite3
import pandas.io.sql as psql

##################
#set stock number
##################
stock_name = 8411

#SQLlite
con = sqlite3.connect("data.db")
c = con.cursor()
try:
    c.execute("""create table all_sort(name integer ,date integer ,open integer ,high integer ,low integer ,close integer ,volume integer);""")
except:
    sql = 'select name,date from all_sort'
    a = c.execute(sql)
    for i, j in a:
        print i,j

#JSMによる日足習得
d = datetime.datetime.today()
q = jsm.Quotes()

start_date = datetime.date(2015, 1, 1)

yesterday = datetime.date.today() - datetime.timedelta(1)
end_date = yesterday

this_year = q.get_historical_prices(stock_name, jsm.DAILY, start_date, end_date)

#SQLに格納後Pandasへ移す
quotes = []
days=[]

colums_sql= u"insert into all_sort values(?,?,?,?,?,?,?)"
for i,each_day in enumerate(this_year):
    day =mdate.date2num(each_day.date)
    days.append(tuple([day]))
    quotes.append([i,each_day.open,each_day.close,each_day.high,each_day.low])
    for_sql = [stock_name,each_day.date,each_day.open,each_day.close,each_day.high,each_day.low,each_day.volume]
    c.execute(colums_sql,for_sql)

sql = 'select * from all_sort'
df = psql.read_sql(sql,con)

df2 = df[df['name'] == stock_name]
df2['date'] = df2['date'].apply(pd.to_datetime)

ascend_df = df2.sort_index(by='date',ascending=True)

#con.commit()


############################
#plot
############################

# SMA EMA
sma5 = pd.rolling_mean(df['close'], window=5)
sma5 = sma5.dropna()

ewma = pd.stats.moments.ewma
ewma5 = ewma(df['close'], span=5)

ewma25 = ewma(df['close'], span=25)
#ewma25 = ewma25.dropna()

#ロウソク足で描画
fig = plt.figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
ax.set_xticks(range(0,len(quotes),5))
ax.set_xticklabels([mdate.num2date(days[index][0]).strftime('%y %b %d') for index in ax.get_xticks()]) 

matplotlib.finance.candlestick(ax, quotes,colorup='red',colordown='blue')
ax.xaxis_date()
ax.autoscale_view()
plt.plot(sma5,label="SMA5")
plt.plot(ewma5,label="EMA5")
plt.plot(ewma25,label="EMA25")
plt.setp( plt.gca().get_xticklabels(),rotation=90, horizontalalignment='left')
plt.legend(loc="best")
ax.invert_xaxis()
plt.show()

f:id:tatabox2000:20150531224918p:plain 後日修正予定。

次回はコマ足(平均足)を検討する予定

参考

How do I plot only weekdays using Python's matplotlib candlestick? – | Mauricio

pandas - ローソク足チャートと移動平均線のプロット - Qiita

VBAでソート

とりあえず書いてみた。

以下のようなデータがあるとして

pos    cur     lots        price  
Buy     USD     10,000,000   120.5  
Buy     USD     10,000,000   119.5  
Buy     EUR     1,000,000    132.5  
Buy     EUR     1,000,000    130.5  
Sell    USD     10,000,000   121.5  
Buy     USD     10,000,000   118.5  
Sell    USD     10,000,000   122.5  

posやcur、up or down指定で並べ替え後、行頭に移動

pos    cur     lots        price  
Buy     USD     10,000,000   120.5  
Buy     USD     10,000,000   119.5  
Buy     USD     10,000,000   118.5  
Sell    USD     10,000,000   121.5  
Sell    USD     10,000,000   122.5  
Buy     EUR     1,000,000    132.5  
Buy     EUR     1,000,000    130.5  

VBAのコード

Sub sort_cur_pos()
    Dim first_row As Long
    Dim last_row As Long
    Dim row_counts As Long
    Dim cur As String
    Dim pos As String
    Dim up_or_down As String
    
    'ソートする項目と方法を指定
    cur = "USD"
    pos = "Sell"
    up_or_down = "up"
    
    '全体選択
    cells(1, 1).Select
    Selection.CurrentRegion.Select
    
    '行数のカウント
    all_row_end = ActiveWindow.RangeSelection.End(xlDown).Row
    
    '全体を選択してプレソート
    cells_area = ActiveWindow.RangeSelection.Address
    Worksheets("Sheet1").Range(cells_area) _
             .Sort Key1:=cells(1, 2), order1:=xlDescending, _
             Key2:=cells(1, 1), order2:=xlAscending
    
    '指定項目の範囲を調査して格納
    For i = 1 To all_row_end Step 1
        If cells(i, 2) = cur Then
            If cells(i, 1) = pos Then
                If first_row = 0 Then
                    first_row = i
                    last_row = i
                Else
                    last_row = i
                End If
            End If
        End If
    Next
    
    '指定項目を指定方向にソート
    If up_or_down = "up" Then
        Worksheets("Sheet1").Range(cells(first_row, 1), cells(last_row, 4)) _
             .Sort Key1:=cells(first_row, 4), order1:=xlAscending
    End If
    If up_or_down = "down" Then
        Worksheets("Sheet1").Range(cells(first_row, 1), cells(last_row, 4)) _
             .Sort Key1:=cells(first_row, 4), order1:=xlDescending
    End If
    
    '指定項目の位置を切り出して先頭に挿入
    Rows(first_row & ":" & last_row).Cut
    Rows("1:1").Insert Shift:=xlShiftDown
    
    '指定項目の範囲を選択
    row_counts = last_row - first_row + 1
    Range(cells(1, 1), cells(row_counts, 4)).Select
    
End Sub

リストを昇順、降順にする関数がないため、今回のように1)ワークシート内に記入した内容でソートする、
以外だと、2)自分でソートを実装する、3).netのArraylistを利用する事になる。