美女と筋肉の画像合成 #Python
どうもです。
洗濯をしている合間に書いています。
美女と筋肉の画像合成
夢の融合です。(すみません)
美女はこちら↓(フリー画像です)
筋肉はこちら↓
まずはインポート
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img1 = cv2.imread('muki.jpg')
img2 = cv2.imread('bijo.jpg')img1.shape
img2.shape
img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)img1 =cv2.resize(img1,(300,300))
img2 =cv2.resize(img2,(300,300))
blended = cv2.addWeighted(src1=img1,alpha=0.8,src2=img2,beta=0.3,gamma=0)
plt.imshow(blended)
筋肉有意の合成画像
筋肉が濃い。
美女有意の合成画像
なるほど。
以上。すみませんでした。
混同行列(2×2 分割表)のあれこれ。
どうも、たまには記事もかかないとサボり癖がついてしまいます。
パワプロでサボり癖がつくと良い選手がサクセスできません。
混同行列(2×2 分割表)のあれこれ。
混同行列というのは、2×2の分割表のことです。
こんな感じ↓
この分割表から、感度やら特異度を計算するのですが、もうややこしいんですよ。今日は、もっとややこしくして差し上げます。(すみません。)
TP(真陽性) FN(偽陽性)
FP(偽陰性) TN(真陰性)
まず、これが大切です。
この、TP、FP、FN、TNから計算できる指標は数多くあります。
少し前にも取り上げました↓
これだけでも、ややこしいですが、他にも指標はありますよという話です。
精度(ACC)=(TP+TN)/(TP+TN+FN+FP)
エラー率(ERR)=(FP + FN)/(TP + TN + FN + FP)
感度(Sn, TPR, REC)=TP /(TP + FN)
特異度(Sp)=TN /(TN + FP)
偽陽性率(FPR)=FP /(TN + FP)
陽性的中率(PPV)=TP /(TP + FP)
MCC=(TP * TN-FP * FN)/((TP + FP)(TP + FN)(TN + FP)(TN + FN))1/2
ややこしいすぎませんか。
予測モデルの論文を読んで理解するためには、時間がかかりそうですね。
歩行データによるうつ病の検出???
ランダムフォレストで音声分類してみた。Python
どうも、無料ブログなので広告が多いなと思い始めたんですけど、まぁ個人ブログなのでいいか。すみません。
ランダムフォレストで音声分類してみた。Python
正直、ランダムフォレストも音声分析もわからない方も多いと思います。
ランダムフォレストは、機械学習のアルゴリズムのひとつで、決定木による複数の弱学習器を統合させて精度を向上させる、アンサンブル学習アルゴリズムです。
たぶん、これも意味不明ですよね。すみません
音声も、画像も、動画もすべて数値データです!!!!!!!!!
ということで、解析できないものはないですかね!?!? まぁいいか。
音声データは、.wavを使用しています。
mp3でも良かったのですがね。
import soundfile as sf
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
n_datas = ?
X =
y =
for i in range(1,n_datas):
men, _ = sf.read('Files/men_{}.wav'.format(i))
women, _ = sf.read('Files/women_{}.wav'.format(i))
no = no[:, 0]
yes = yes[:, 0]
X.append(men)
X.append(women)
y.append(0)
y.append(1)
X = np.array(X)
y = np.array(y)
X_fft = np.array([np.fft.fft(x) for x in X])
X_fft = np.fft.fft(X)
X = np.array([np.hstack*1
clf.fit(X, y)
男性と女性の音声分類をしました。
うまくコードが表示されない場合があるので、ほしい方はこちら↓
あんまり良いコードではないですが
雑ですみません。
おすすめ書籍を載せます↓
*1:x.real**2+x.imag**2, np.arctan2(x.real, x.imag))) for x in X_fft])
clf = RandomForestClassifier()
scores = cross_val_score(clf, X, y, cv=3)
print('score:{:.3f} (+/-{:.3f})'.format(scores.mean(), scores.std()*2
○○の臀裂をエッジ検出してみた。Python
いきなりすみません。
○○の臀裂を検出してみた。
このタイトルに惹かれてきた方は、相当やばいです。
(書いている方もよっぽどやばいですけどね。)
臀裂を検出するのは、この画像!!!
もちろんフリー素材です。
エッジ検出というのは、微分でできます。
どうでもいいですよね。
import cv2
img = cv2.imread("path.jpg",0)
img_canny = cv2.Canny(img, 100, 200)
cv2.imshow("Canny",img_canny)
cv2.waitKey(0)
cv2.destroyAllWindows()
前処理雑です。
はい。
”ぞう”なんて期待していませんよね。
一部の、男性が期待しているのは美女の臀裂でしょ。
フリー素材です。
なかなかのエッジ検出です。
結論:美女の臀裂は検出できる。
誰得。。。。
皆様、大変申し訳ございませんでした。
美人をフーリエ変換してみた。(空間周波数領域っていうのがあるんですよ。) - 人工知能・リハビリ・日記・理学療法
k-fold cross validation;k分割交差検証
どうも、コロナの感染力は本当に強いですね。そして、ワクチンは接種後の倦怠感はきつかった。いきなりのカミングアウトすみません。
k-fold cross validation;k-分割交差検証
私が知っているということは、皆様はもっと詳しいかもしれません。
k-fold cross validation;k分割交差検証とは
k分割交差検証は、訓練データセットを k 個のサブセットに分割して、そのうち kから、マイナス1 個のサブセットで学習して、残りの 1 個のサブセットで検証するという作業をすべての組み合わせに対して行う検証方法です。
堅苦しい。
図で見ましょう↓
青い部分と検証データで予測モデルを作って、テストデータで予測モデルの精度の確認を行います。もちろん、テストデータは独立している必要がありますね。
また、分割した各サブセットデータも毎回ランダムになっては再現性がありません。random_stateを固定しましょう!!!!
kf = KFold(n_splits=5, shuffle=True, random_state=42)
そのほかの交差検証では、ホールドアウト法などがあります。
上記のものは正確にいうと組み合わせかもしれませんがね。
雑な記事でした。
Fire stick TVを使用したMac / iPhoneの画面拡張・ミラーリング ※無線です - 人工知能・リハビリ・日記・理学療法
Fire stick TVを使用したMac / iPhoneの画面拡張・ミラーリング ※無線です
どうも、電気コンセントの配置は重要ですよね。
いきなりすみません。
さて、前回はアンドロイドのスマホをFire stickに無線でミラーリングする方法をお伝えしました。
今回は、Fire stick TVを使用してiPhone、または、Macbookを無線でテレビに出力したいと思います。
Fire Stickはこちら↓
Apple製品をFire stick TVに接続するには、305円のアプリが必要です。
それがコレ↓、このアプリをFire stickにダウンロードしてください!
Amazon.co.jp: AirReceiver: Android アプリストア
正味、ただこれだけです。
そして、Fire stickを起動した状態で、iPhoneのミラーリングボタンをおすだけ!!
ミラーリングボタンを押せば、あとは選択するのみ!!
Macの場合は、こちら↓
Macの場合は、ミラーリングだけでなく、画面の拡張もできますので2画面にもできます!!
これは、とても便利です!!!
F値を出してみた。Python
どうも、ワクチンの副反応が出ております。
Guchiです。いきなりのカミングアウトすみません。
F値を出してみた。Python
F値については↓
診断精度(分類性能)を示すほうのF値です。
import numpy as np
input_matrix = [ [1000 , 1],[800, 1200]]
def calculation_f1(input_matrix):
confusion_matrix = np.array(input_matrix, dtype = 'float')
matrix_len = len(confusion_matrix)
col_sum = np.sum(confusion_matrix, axis=1)
row_sum = np.sum(confusion_matrix, axis=0)F1_list = []
for i in range(0, matrix_len):
Precision = confusion_matrix[i][i] / (confusion_matrix[i][i] + (col_sum[i] - confusion_matrix[i][i]))
Recall = confusion_matrix[i][i] / (confusion_matrix[i][i] + (row_sum[i] - confusion_matrix[i][i]))
F1 = (2*Precision*Recall) / (Precision+Recall)
F1_list.append(F1)return sum(F1_list)/matrix_len
print("F value: " + str(calculation_f1(input_matrix)))
結果↓
マシューズ相関係数は直感的ではなかったが保守的説。
どうも、すみません、まだまだ素人です。
いきなりのカミングアウトすみません!
マシューズ相関係数は直感的ではなかったが保守的説。
マシューズ相関係数;Matthews Correlation Coefficient (MCC)
まず、この指標はなんやねんと思った方も多いでしょう。私もそのうちの一人です。w
ただ、最近の論文ではよく使用されています。
MCCは、混同行列のすべてのフィールドを評価して、分類器の偏りのない比較に適した尺度と見なされています。
MCCの参考文献はこちら↓
混同行列の話や予測精度(F値)についてはこちら↓
F値は2つある?F statistics and F measure! - 人工知能・リハビリ・日記・理学療法
MCCは1から-1までの相関係数です。
1だと完璧な分類性能、0は完全にランダムな分類性能、-1は完全に逆の分類性能
計算して見ましょう。
MCCの計算式はこちら↓
さっそく、実際に計算。
まずは、インポート
import numpy as np
import pandas as pd
混同行列の各要素
N_TP = 15
N_FP = 1
N_FN = 2
N_TN = 10
混同行列
conf_MX = pd.DataFrame({"Positive":[N_TP,N_FN], "Negative":[N_FP,N_TN]},
index=["Positive","Negative"])
print(conf_MX)
TP = [[1,1] for i in range(N_TP)]
FP = [[1,0] for i in range(N_FP)]
FN = [[0,1] for i in range(N_FN)]
TN = [[0,0] for i in range(N_TN)]
df = pd.DataFrame(TP + FP + FN + TN, columns=["pred", "truth"])
print(df.head(5))
MCCを出して行きましょう!!!(一部、編集してください)
出力
print("MCC:" + str(mcc))
混同行列の結果
上記の数値だと、直感的にMCCも高くなりそうですよね。
マシューズ相関係数の結果
少し、混同行列の数字を変えてみましょう!!
こちらで計算↓
ちなみに感度は、非常に高いですよね。
MCCはどうでしょうか?
大分、下がりましたね。
感度が高くても、混同行列全体の分類能が悪くなればMCCは低下しますね。
感度の方が直感的ですが、MCCは分類能力は反映しそうです。
私の中では直感的ではないですが、保守的に考えてMCCが高いと、予測・分類精度が高いのかなという感じですね。
F値ですと、偏りがあった場合に、精度が高く見積もられたりすることがあります。
(例えば、感度は高いけど特異度が低い場合など)
医学的には、F値や感度・特異度の方が直感的でわかりやすいです。
MCCが高い場合は、ある意味安全なので、保守的な指標になりそうです。
(ちなみに、MCCは、ほぼピアソンの相関係数と同じです。)
よく聞く正則化。やっぱり、普通はあまり聞かないかも
どうも、ナルガクルガの大剣、大刀、ボウガンを作りました。モンハンです。
いきなりのカミングアウトすみません。
正則化
正則化とは、なんぞやと思いますよ。病院で普通に勤務してれば出てこないワードです。もしかしたら、研究している方もあまり聞かないかもしれません。
正則化:
機械学習モデルを学習するとき、過学習が発生するのを防ぐために行うようです。
めっちゃざっくり正則化の解説↓↓
過学習が発生しているときは、特定の入力値に対する係数が大きくなる傾向がありますが、正則化は、モデルの係数が大きいほど機械学習のモデルの係数をなるべく小さくしようとします。
正則化の方法の一つ前処理方として正規化などがあります。正規化にも複数種類がありますので、統計とかデータサイエンスって本当に難しいですよね。
動画を一秒づつ自動で画像にしてみた。
ハウスメーカーとの打ち合わせで、こだわりのなさがこだわりのGuchiです。いきなりのカミングアウトすみません。
(ネットの通信速度重視ですから。)
動画を一秒づつ自動で画像にしてみる。
まぁこれは別に、Pythonでしなくてもいいんですが、私の場合は、Pythonの方が楽に出来ます。
もしかしたら、家屋調査とかに使えるかもしれません。
(これでも、私は、一応、理学療法士の資格を持っている身なのでw)
すべて自動でできれば楽ですよね。働き方が自称データサイエンティスト+セラピストなのですが、リハビリ部内に一人くらい、私みたいな人が居てもいいかもしれません。
自意識過剰ですみません。
階層的に作っています。
OpenCVのインストールはこちら↓↓
import cv2
from os import makedirs
from os.path import splitext, dirname, basename, join
def save_frames(video_path: str, frame_dir: str,
name="image", ext="png"):
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
return
v_name = splitext(basename(video_path))[0]
if frame_dir[-1:] == "\\" or frame_dir[-1:] == "/":
frame_dir = dirname(frame_dir)
frame_dir_ = join(frame_dir, v_name)makedirs(frame_dir_, exist_ok=True)
base_path = join(frame_dir_, name)idx = 0
while cap.isOpened():
idx += 1
ret, frame = cap.read()
if ret:
if cap.get(cv2.CAP_PROP_POS_FRAMES) == 1:
cv2.imwrite("{}_{}.{}".format(base_path, "0000", ext),
frame)
elif idx < cap.get(cv2.CAP_PROP_FPS):
continue
else: #
second = int(cap.get(cv2.CAP_PROP_POS_FRAMES)/idx)
filled_second = str(second).zfill(4)
cv2.imwrite("{}_{}.{}".format(base_path, filled_second, ext),
frame)
idx = 0
else:
breaksave_frames("movie_path", ".//folder_path")
なんかややこしいけど、できやした。
明日も仕事です。頑張りましょう。
最近、Rに触れてないなー。
今度、R系のしょうもない記事を書いてみます。
前回の記事↓
意思決定曲線分析関連↓