「Dive Into Python 3」フィボナッチ数列ジェネレータ
http://diveintopython3-ja.rdy.jp/generators.html#a-fibonacci-generator
のyieldの処理が意味不明だった。。。
こちらの説明がわかりやすかった。
pythonのyieldにハマったから、初心者なりに解明してみた
http://aipacommander.hatenablog.jp/entry/2014/06/15/104756
yeild使えそう!
あとフィボナッチ数列とは(Wiki)
2016年1月30日土曜日
2016年1月25日月曜日
pythonで CSVファイルを読み込み、一列ごと空けてファイルへ書き込む
#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 import csv # 読み込みファイル in_file = 't.csv' fr = open(in_file, "r") readcsv = csv.reader(fr) data = [ v for v in readcsv ] # 読み込みCSVファイルデータをリストのリストで取得 col = len(data) # 行 row = len(data[0])*2 # 列 # 変更後の列は (読み込みCSVファイルの列) x2のため"*2" # 変更後の配列が入るオブジェクト # 空の(col x row)配列を作成 cnv = [] for i in range(col): tmp = [] for j in range(row): tmp.append('') cnv.append(tmp) # すべて空列のcnvに2列ごとに読み込みCSVデータ列を入れる処理 for i in range(col): for j in range(row // 2): # 2 x jの列に jの列のdataデータを代入 cnv[i][2*j] = data[i][j] # 書き込みファイル fw = open('t-out.csv', 'w') writer = csv.writer(fw, lineterminator='\n') writer.writerows(cnv) fw.close() fr.close()
2016年1月23日土曜日
Pythonで画像認識にチャレンジのソースコード
「データサイエンティスト養成読本 機械学習入門編」
特集4 Pythonで画像認識にチャレンジ
第3章 リスト1 単純なパターンマッチング のコードがネット上になかったため、書いた。
https://github.com/tomoobata/ML_DS_Training/blob/master/ch3_1.py
http://mapodou.hatenablog.com/entry/2016/01/05/063000
感想:
しっかしもって処理に時間がかかる。
1枚の画像のマッチングに5,6秒とかやってられない。
デジカメやらスマホカメラのリアルタイムでの顔認識とかスマイル認識みたいなものは、まったく別のアルゴリズムなのか??と素朴な疑問。
>> 追記
顔認識アルゴリズムはいろいろ高速なものがあるようだが、それは置いておいて、OpenCVを入れて顔認識を試してみた。
https://github.com/tomoobata/ML_DS_Training/blob/master/cv.py
さすがにこれは速い。1秒掛からず顔認識した。すげー!
参照:
http://www.non-fiction.jp/2015/08/14/face-detect/
http://www.takunoko.com/blog/python%E3%81%A7%E9%81%8A%E3%82%93%E3%81%A7%E3%81%BF%E3%82%8B-part1-opencv%E3%81%A7%E9%A1%94%E8%AA%8D%E8%AD%98/
特集4 Pythonで画像認識にチャレンジ
第3章 リスト1 単純なパターンマッチング のコードがネット上になかったため、書いた。
https://github.com/tomoobata/ML_DS_Training/blob/master/ch3_1.py
ちなみに ax2.add_patch(plt.Rectangle((y,x),tw,th, edgecolor='w', facecolor='none',linewidth=2.5)) という行が間違えていて次が正しいようだ。 rect = plt.Rectangle((y,x),tw,th, edgecolor='w', facecolor='none',linewidth=2.5)あと第3章 リスト2のコードは、こちらの方が書かれていた。
http://mapodou.hatenablog.com/entry/2016/01/05/063000
感想:
しっかしもって処理に時間がかかる。
1枚の画像のマッチングに5,6秒とかやってられない。
デジカメやらスマホカメラのリアルタイムでの顔認識とかスマイル認識みたいなものは、まったく別のアルゴリズムなのか??と素朴な疑問。
>> 追記
顔認識アルゴリズムはいろいろ高速なものがあるようだが、それは置いておいて、OpenCVを入れて顔認識を試してみた。
https://github.com/tomoobata/ML_DS_Training/blob/master/cv.py
さすがにこれは速い。1秒掛からず顔認識した。すげー!
参照:
http://www.non-fiction.jp/2015/08/14/face-detect/
http://www.takunoko.com/blog/python%E3%81%A7%E9%81%8A%E3%82%93%E3%81%A7%E3%81%BF%E3%82%8B-part1-opencv%E3%81%A7%E9%A1%94%E8%AA%8D%E8%AD%98/
2016年1月22日金曜日
Python をWeb経由で実行させる方法
php のexec()関数を使って < ?php $PythonPath = 'python ./cgi-bin/test.py; exec($fullPath); ? > とするのが手っ取り早くできた。参照 http://freetech-e.com/html/callpython.htm
2016年1月17日日曜日
pythonでのコピー
python での値のコピー
a=b とやると値参照になるので注意!!
http://bugrammer.g.hatena.ne.jp/nisemono_san/20111210/1323444429
http://lightson.dip.jp/zope/ZWiki/084_e9_85_8d_e5_88_97_e3_82_92_e8_a4_87_e8_a3_bd_e3_81_99_e3_82_8b
a=b とやると値参照になるので注意!!
http://bugrammer.g.hatena.ne.jp/nisemono_san/20111210/1323444429
http://lightson.dip.jp/zope/ZWiki/084_e9_85_8d_e5_88_97_e3_82_92_e8_a4_87_e8_a3_bd_e3_81_99_e3_82_8b
pythonでの配列のコピー >>> import copy >>> e = copy.deepcopy(d) >>> b[0] = "b" >>> d (['a', 1, 2], ['b', 4, 5]) >>> e (['a', 1, 2], [3, 4, 5])
pythonで転置行列にする(Numpyなし)
文字列を行列に含んでいるとNumpyでは面倒なので調べた。
参照: http://asiagohan.hatenablog.com/entry/2015/05/08/170715
こちらのやり方もできた。
http://lightson.dip.jp/blog/seko/2830
data = [['O', 'A', 'B', 'C', 'D', 'E', 'F'], ['P', 'A11', 'A12', 'A13', 'A14', 'A15', 'A16'], ['Q', 'A21', 'A22', 'A23', 'A24', 'A25', 'A26'], ['R', 'A31', 'A32', 'A33', 'A34', 'A35', 'A36']] のとき、 data2 = list(map(list, zip(*data))) とするとできた。 data2 = [['O', 'P', 'Q', 'R'], ['A', 'A11', 'A21', 'A31'], ['B', 'A12', 'A22', 'A32'], ['C', 'A13', 'A23', 'A33'], ['D', 'A14', 'A24', 'A34'], ['E', 'A15', 'A25', 'A35'], ['F', 'A16', 'A26', 'A36']]
参照: http://asiagohan.hatenablog.com/entry/2015/05/08/170715
こちらのやり方もできた。
http://lightson.dip.jp/blog/seko/2830
def invert_lst(lst): col = len(lst[0]) row = len(lst) inv = [] for i in range(col): l = [] for j in range(row): l.append('') inv.append(l) for i in range(row): for j in range(col): inv[j][i] = lst[i][j] return inv lst = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]] print invert_lst(lst) >>>[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]]
pythonでループでのインデックス
pythonでループでのインデックス >>> list1 = ['a', 'b', 'c'] >>> for (i, x) in enumerate(list1): ... print i,x ... 0 a 1 b 2 c
pythonで多次元配列の行と列の長さ取得
pythonで多次元配列の行と列の長さ取得
list = [[1, 2, 3], [4, 5, 6]] # 2x3行列のとき
print len(list) # 表示されるのは 2。 行の長さ
print len(list[0]) # 表示されるのは 3。列の長さ
list = [[1, 2, 3], [4, 5, 6]] # 2x3行列のとき
print len(list) # 表示されるのは 2。 行の長さ
print len(list[0]) # 表示されるのは 3。列の長さ
2016年1月14日木曜日
2016年1月1日金曜日
Cousera Machine Learning / week5-5 めも
Gradient Checking epsilon = 1e-4; for i = 1:n, thetaPlus = theta; thetaPlus(i) += epsilon; thetaMinus = theta; thetaMinus(i) -= epsilon; gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon) end; 次をチェックする gradApprox ≈ DVec
Cousera Machine Learning / week5-4 めも
Implementation Note: Unrolling Parameters 授業メモ
function [jVal, gradient] = costFunction(theta) ... optTheta = fminunc(@costFunction. initalTheta, options) Neural Network(L-4): theta matrices (Theta1, Theta2, Theta3) D matrices (D1, D2, D3) ------------------------- thetaVec = [Theta1(:), Theta2(:); Theta3(:)]; DVec = [D1(:); D2(:); D3(:)]; ここでTheta1(:)の意味は、Theta1の各要素をすべて列にしたもの つまり octave:7> b=[1 3; 2 4] b = 1 3 2 4 があったっとき、b(:)は、次のようになる octave:8> b(:) ans = 1 2 3 4 ------- Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11 Theta1 = reshape(thetaVector(1:110),10,11) Theta2 = reshape(thetaVector(111:220),10,11) Theta3 = reshape(thetaVector(221:231),1,11) reshape関数は、reshape(a, size)のように書いて次のように行列の変形をできる > reshape([1,2,3,4], 2,2) ans = 1 3 2 4 --------- octave:1> Theta1=ones(10,11) Theta1 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 octave:2> Theta2=2*ones(10,11) Theta2 = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 octave:3> Theta3=3*ones(1,11) Theta3 = 3 3 3 3 3 3 3 3 3 3 3 > ThetaVec =[ Theta1(:); Theta2(:); Theta3(:) ]; octave:10> size(ThetaVec) ans = 231 1 ここでsizeは行列のサイズを返し、次のようになる > a=[1,2;3,4;5,6] a = 1 2 3 4 5 6 octave> size(a) ans = 3 2 octave> size(a,1) ans = 3 octave> size(a,2) ans = 2 1> reshape(ThetaVec(1:110), 10, 11) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ---------------
登録:
投稿 (Atom)