• Skip to main content
  • Skip to primary sidebar

学習記録

Python 基本

自作機会学習分類(キノコ)

2017年12月15日 by 河副 太智 Leave a Comment

キノコの分類

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import requests
import zipfile
from io import StringIO
import io
import pandas as pd
 
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
 
mush_data_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data"
s = requests.get(mush_data_url).content
 
mush_data = pd.read_csv(io.StringIO(s.decode("utf-8")),header=None)
 
# データに名前をつける(データを扱いやすくするため)
mush_data.columns = ["classes", "cap_shape", "cap_surface", "cap_color", "odor", "bruises",
                     "gill_attachment", "gill_spacing", "gill_size", "gill_color", "stalk_shape",
                     "stalk_root", "stalk_surface_above_ring", "stalk_surface_below_ring",
                     "stalk_color_above_ring", "stalk_color_below_ring", "veil_type", "veil_color",
                     "ring_number", "ring_type", "spore_print_color", "population", "habitat"]
 
 
 
# カテゴリー変数(色の種類など数字の大小が決められないもの)をダミー特徴量(yes or no)として変換する
mush_data_dummy = pd.get_dummies(
    mush_data[['gill_color', 'gill_attachment', 'odor', 'cap_color']])
 
 
# 目的変数:flg立てをする
mush_data_dummy["flg"] = mush_data["classes"].map(
    lambda x: 1 if x == 'p' else 0)
 
 
 
# 説明変数と目的変数
X = mush_data_dummy.drop("flg", axis=1)#ここはflg立てした0か1のデータを縦に分離(classesに)
Y = mush_data_dummy['flg']#分離されたflg立てした0か1のデータ
 
train_X,test_X,train_y,test_y = train_test_split(X,Y, random_state=42)
#train_Xとtest_Xに変数Xを分割して8124行 分け方はランダム
#train_yとtest_yに変数Yを分割して8124行 分け方はランダム
 
 
# モデルの読み込み
from sklearn.ensemble import RandomForestClassifier
 
# モデルの構築
model = RandomForestClassifier()
# モデルの学習
model.fit(train_X, train_y)
 
# 正解率の算出
model.score(test_X, test_y)

 

Filed Under: Python 基本

パラメーター penalty 線形SVMのハイパーパラメーター

2017年12月14日 by 河副 太智 Leave a Comment

ロジスティック回帰同様に線形SVMにもpenaltyのパラメーターがあります。
設定できる値も同じく、”l1″と”l2″です。

 

データの要素がA,B,C,Dの4種類であり、ラベルがDである時、次のペナルティに関する説明のうち正しいものを選んでください。

 

l1ペナルティは主成分を抽出する働きがあります。
l2ペナルティは特定の相関性を見ず、データ全体の関係性を用いてモデルを説明しようとします。

 

1
B=2A,C=Aの関係がある時、l1ペナルティはBとCの重みを減らしAだけでモデルに説明させるように働く。

Filed Under: Python 基本

パラメーター multi_class ロジステック回帰のハイパーパラメーター

2017年12月14日 by 河副 太智 Leave a Comment

multi_classは多クラス分類を行う際にモデルがどういった動作を行うかということを決めるパラメーターです。
ロジスティック回帰では「ovr」、「multinomial」の2つの値が用意されています。
ovr
クラスに対して「属する/属さない」の二値で応えるような問題に適しています。
multinominal
各クラスに分類される確率も考慮され、「属する/属さない」だけではなく「どれくらい属する可能性があるか」を扱う問題に適しています。

Filed Under: Python 基本

パラメーター random_state ロジステック回帰のハイパーパラメーター

2017年12月14日 by 河副 太智 Leave a Comment

モデルは学習の際にデータをランダムな順番で処理していくのですが、random_stateはその順番を制御するためのパラメーターです。
ロジスティック回帰モデルの場合、データによっては処理順によって大きく境界線が変わる場合があります。

また、このrandom_stateの値を固定することで同じデータでの学習結果を保存することができます。
当講座でも実行時に結果が変わらないようにrandom_stateの値は基本的に固定しています。

当講座で用いているデータはrandom_stateを変えても結果があまり変わりませんが、実際に用いる場合にはデータの再現性も考えてrandom_stateの値を固定するとよいでしょう。

Filed Under: Python 基本

ランダムフォレスト

2017年12月13日 by 河副 太智 Leave a Comment

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# きのこデータの取得
# 必要なパッケージをインポート
import requests
import zipfile
from io import StringIO
import io
import pandas as pd
# データの前処理に必要なパッケージのインポート
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
 
# url
mush_data_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data"
s = requests.get(mush_data_url).content
 
# データの形式変換
mush_data = pd.read_csv(io.StringIO(s.decode('utf-8')), header=None)
 
# データに名前をつける(データを扱いやすくするため)
mush_data.columns = ["classes", "cap_shape", "cap_surface", "cap_color", "odor", "bruises",
                     "gill_attachment", "gill_spacing", "gill_size", "gill_color", "stalk_shape",
                     "stalk_root", "stalk_surface_above_ring", "stalk_surface_below_ring",
                     "stalk_color_above_ring", "stalk_color_below_ring", "veil_type", "veil_color",
                     "ring_number", "ring_type", "spore_print_color", "population", "habitat"]
 
# カテゴリー変数(色の種類など数字の大小が決められないもの)をダミー特徴量(yes or no)として変換する
mush_data_dummy = pd.get_dummies(
    mush_data[['gill_color', 'gill_attachment', 'odor', 'cap_color']])
# 目的変数:flg立てをする
mush_data_dummy["flg"] = mush_data["classes"].map(
    lambda x: 1 if x == 'p' else 0)
 
# 説明変数と目的変数
X = mush_data_dummy.drop("flg", axis=1)
Y = mush_data_dummy['flg']
 
# 学習データとテストデータに分ける
train_X, test_X, train_y, test_y = train_test_split(X,Y, random_state=42)
 
# 以下にコードを記述してください。
# モデルの読み込み
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
 
# モデルの構築
model1 = RandomForestClassifier()
model2 = DecisionTreeClassifier()
# モデルの学習
model1.fit(train_X, train_y)
model2.fit(train_X, train_y)
 
# 正解率を算出
print(model1.score(test_X, test_y))
print(model2.score(test_X, test_y))

 

Filed Under: Python 基本

DBSCAN

2017年12月12日 by 河副 太智 Leave a Comment

k-means法は複雑で大小の偏りがある場合はよいクラスタリングができない事がある

これに対しクラスタリングのアルゴリズムにDBSCANがあり
クラスターを高密度(データが凝集している)の場所を低密度の場所から分離して表示

k-means法は、クラスターの大きさに均等で平坦な場合は有効だが
DBSCANは対照的に、平坦ではないデータやクラスターサイズに偏りがある際に真価を発揮する

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import matplotlib.pyplot as plt
import numpy as np
 
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans
from sklearn.cluster import DBSCAN
 
# 月型のデータを生成
X, y = make_moons(n_samples=200,
                 noise=0.05,
                 random_state=0)
# グラフと2つの軸を定義 左はk-means法用、右はDBSCAN用
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8,3))
km = KMeans(n_clusters=2, random_state=0)
y_km = km.fit_predict(X)
ax1.scatter(X[y_km==0, 0],
            X[y_km==0, 1],
            c='lightblue',
            marker='o',
            s=40,
            label='cluster 1')
ax1.scatter(X[y_km==1, 0],
            X[y_km==1, 1],
            c='red',
            marker='s',
            s=40,
            label='cluster 2')
ax1.set_title('K-means clustering')
 
# DBSCAN用のインスタンスを生成
 
 
# XをDBSCANでクラスタリング
 
 
ax2.scatter(X[y_db==0, 0],
            X[y_db==0, 1],
            c='lightblue',
            marker='o',
            s=40,
            label='cluster 1')
ax2.scatter(X[y_db==1, 0],
            X[y_db==1, 1],
            c='red',
            marker='s',
            s=40,
            label='cluster 2')
ax2.set_title('DBSCAN clustering')
plt.legend()
plt.show()

 

 

 

 

Filed Under: Python 基本

  • « Go to Previous Page
  • Page 1
  • Page 2
  • Page 3
  • Page 4
  • Page 5
  • Go to Next Page »

Primary Sidebar

カテゴリー

  • AWS
  • Bootstrap
  • Dash
  • Django
  • flask
  • GIT(sourcetree)
  • Plotly/Dash
  • VPS
  • その他tool
  • ブログ
  • プログラミング
    • Bokeh
    • css
    • HoloViews
    • Jupyter
    • Numpy
    • Pandas
    • PosgreSQL
    • Python 基本
    • python3
      • webアプリ
    • python3解説
    • scikit-learn
    • scipy
    • vps
    • Wordpress
    • グラフ
    • コマンド
    • スクレイピング
    • チートシート
    • データクレンジング
    • ブロックチェーン
    • 作成実績
    • 時系列分析
    • 機械学習
      • 分析手法
      • 教師有り
    • 異常値検知
    • 自然言語処理
  • 一太郎
  • 数学
    • sympy
      • 対数関数(log)
      • 累乗根(n乗根)
    • 暗号学

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in