statepipyの日記

興味のある分野(統計、疫学、機械学習、品質管理、手料理)と、PCスキルの維持を目的に書き続けます!

python

ライブラリーとモジュールのインポート

ライブラリーとモジュールのインポート・import ライブラリ名 ・import ライブラリ名 as 省略名 ・import ライブラリ名.モジュール名 ・from ライブラリ名 import モジュール名 ・import ライブラリ名.モジュール名 as 省略名 ・from ライブラリ名 import モ…

Pythonでの「クロス表」の書き方

Aが縦列、Bが横列(実行結果はDataFrame形式) #合計値を出力しない pd.crosstab(X['A'], X['B']) #合計値を出力 pd.crosstab(X['A'], X['B'], margins=True)

Permutation Importance

qiita.com

object型の基本統計量

print(df.describe(include=["O"])) #Oは「オー」

ビニング(binning)

連続変数を、ビン(bin)と呼ばれる離散値に置き換える作業。

NumPy配列ndarrayを回転する

note.nkmk.me

無名関数(lambda)

df_sex = df["sex"].apply(lambda x: 1 if x=="Male" else 0) applyを通じて渡されたGenderをxとして、xがMaleなら1、Maleではないなら0を返すという意味。

相関係数のヒートマップ表示

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(10,8)) sns.heatmap(df.corr(), vmin=-1.0, vmax=1.0, annot=True, cmap='coolwarm', linewidths=0.1) * sns.heatmap() →seabornライブラリのheatmap関数を…

目的変数のクラスごとのデータ抽出

目的変数(質的変数)のクラス毎のデータ抽出 #データフレームの再帰代入 df[df["質的変数名"] == 0] #query関数を使う df.query("質的変数名 == 0") #連続変数を質的変数のカテゴリ(0/1)の場合に分ける df1 = df.query("質的変数==0")["連続変数"] df2 = df.q…

# データフレームA (名義尺度) df1 = df[変数名] # データフレームB(連続尺度のみ残す) df2 = df.drop(df1, axis=1) # ←axis=1 は列の削除 #両者のを横(列)で横結合する df_both = pd.concat([df1, df2], axis=1) * 項目を絞る場合 → df1["●●●●●"]

重複している行の検索

#重複部分の個数の確認(2つ目以降には「True」が出力される) print(df.duplicated().sum()) #重複部分のサンプルの表示 print(df[df.duplicated()])

ML Ops と Model Ops の違い

www.ashisuto.co.jp

ライブラリーにインポート

# numpyのインポート import numpy as np # matplotlibのインポート(大きいため、必要なモジュールのみをインポート) from matplotlib import pyplot as plt

関数定義(def)の基本構文

関数の定義(def)は以下のようにして行う。 def abcde(): #targetに"study Python"という文字列を代入 target = "study Python" # 戻り値を指定 return target # 関数abcdeを呼び出し、結果をtaskという変数に代入 task = abcde() # taskを出力 print(task)

リスト内包表記 と 通常の表記

# リスト内包表記を用いない場合(通常) score = [40,50,60,70,80, 90] low_score = [] for test in score: if test < 50: low_score.append(test) # リスト内包表記を用いた場合 score = [40,50,60,70,80, 90] low_score = [test for test in score if tes…

辞書型におけるfor文

辞書型に対するfor文では、取得予定のデータに対して .keys(), .values(), .items() の何れかを用います。 > |python|# keyに対して for i in 辞書.keys(): 処理#valueに対して for i in 辞書.values(): 処理#key, value両方に対して for i, j in 辞書.items…

ループを用いたインデックスの取得(enumerate関数)

# リストの定義 test_score = [75,88,93,81,71] # インデクスと要素を「enumerate関数」を用いて出力 for index, score in enumerate(score): result = 'student No.' + str(index)+' : '+str(test_score) print(result) # 出力 student No.0 : 75 student N…

# 文字列型(str) pet = "cat" print(train_color) # 論理型(bool) cute = True # ←Trueは文字でなく、TrueかFalseかの0/1をとる値 print(cute)

replace関数は、リストに用いることはできない

インデックスを指定することで、リスト内の要素を新しい値に変更可能である。 # x = [1, 3, 5] x[1] = 2 print(x) # 出力 [1, 2, 3, 5] しかし、文字列の置換(replace関数)はリストには使えない。

リストの操作

■リスト名 [開始 : 終了] インデックスが開始以上、終了未満(以下でない!)の値を取出す。■要素名 in リスト名 ある要素がリストの値として含まれているかどうかを判断。 含まれている場合 → True 含まれていない → False■リスト名.index(要素名) 引数に指…

文字変数を数値に変換

# sexがm,fになっているので、関数(change_sex)を定義してmを1,fを0に変換 def change_sex(val): if val == "m": return 1 elif val == "f": return 0 # カラム関数を適用する場合はapply関数を用いる mydata["sex"] = mydata["sex"].apply(change_sex)

ハイパーパラメータとは

ja.wikipedia.org

予測精度の改善(特に、特徴量の選択について)

予測精度の改善するには、大きく分けて以下の3つが知られている。 (1)データ量を増やす (2)アルゴリズムのチューニング (3)特徴量の増減(3)には、以下のような方法がある。 ①フィルター法:相関係数等によって、関連のある変数を投入する。 ②ラ…

回帰分析

# 必須インポート import numpy as np # MSEを求めるために必要(MMSEは直接計算できない) from sklearn.metrics import mean_squared_error as MSE # 説明変数を指定 select_columns = ["変数A","変数B","変数C","変数D","変数E"] # ダミー変数化(k個のカ…

文字変数のコード化

# 「t」または「f」が入力sれているので、「t」なら1、「f」ならを返す関数を作成 def trans_f(x): if x == 't': return 1 elif x == 'f': return 0 # apply関数を用いて変換 data['文字変数A'] = data['文字変数A'].apply(trans_f(x)) # 無名関数の記述 da…

散布図の描画

# 散布図 data.plot.scatter(x='X軸の変数名', y='Y軸の変数名') plt.show()

# seabornのインポート import seaborn as sns # X軸及びY軸の指定 sns.boxplot(data=●●●●, x="X軸に相当する変数名", y="Y軸に相当する変数名") # 可視化結果を表示 plt.show() # 表示範囲を制限する時 (例では0~500) plt.ylim(0, 500) #←このコマンドが…

Pandasコマンド

# count, mean, std, min, 25%タイル値, 50%タイル値, 75%タイル値, max の確認 df.describe() # 外れ値の確認 data["●●●"].value_counts().sort_index().tail() data["●●●"].value_counts().sort_index().head() # 特定のデータの削除 (連続変数である[y]の…

axis=0 と axis=1 (Pandas)

axis=0 → 列単位 axis=1 → 行単位 #1列目を削除 df1 = df.drop(0, axis=0) #1行目を削除 df1 = df.drop(0, axis=1)

Googleドライブのマウント

# マウント from google.colab import drive drive.mount('/content/drive') 上記コマンドを入力後、Googleにアクセスする際のパスワードを貼り付けて完了! その他にも、以下のようなものがある。 # ドライブ内のファイルをリスティング(中身の確認) ! ls…