• Skip to main content
  • Skip to primary sidebar

学習記録

k-means

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

k-means法でのクラスタリング

 

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
import matplotlib.pyplot as plt
import numpy as np
 
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
 
# Xには1つのプロットの(x,y)が、yにはそのプロットの所属するクラスター番号が入る
X,y = make_blobs(n_samples=150,         # サンプル点の総数
               n_features=2,          # 特徴量(次元数)の指定  default:2
               centers=3,             # クラスタの個数
               cluster_std=0.5,       # クラスタ内の標準偏差
               shuffle=True,          # サンプルをシャッフル
               random_state=0)        # 乱数生成器の状態を指定
 
km = KMeans(n_clusters=3, random_state=0)
y_km = km.fit_predict(X)
 
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8,3))
 
ax1.scatter(X[:, 0],
            X[:, 1],
            c='black')
ax1.grid()
 
ax2.scatter(X[y_km==0, 0],
            X[y_km==0, 1],
            c='r',
            s=40,
            label='cluster 1')
ax2.scatter(X[y_km==1, 0],
            X[y_km==1, 1],
            c='b',
            s=40,
            label='cluster 2')
ax2.scatter(X[y_km==2, 0],
            X[y_km==2, 1],
            c='g',
            s=40,
            label='cluster 3')
ax2.grid()
plt.show()

 

 

Filed Under: 機械学習

クラスタリングとデンドログラフ

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

階層的クラスタリング、デンドログラフという階層を持つ

非階層的クラスタリングも、階層的クラスタリングと同じように
データから似た性質の法則を探し出し、クラスターを作るが階層構造を持たない。

 

非階層的クラスタリングはクラスターの数を開発者が決める
大量のデータを扱うのにてきしており、k-means法が使われる

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
from sklearn.datasets import make_blobs
 
# Xには1つのプロットの(x,y)が、yにはそのプロットの所属するクラスター番号が入る
X,y = make_blobs(n_samples=500,         # サンプル点の合計
               n_features=2,          # 特徴量の指定  次元数とも呼ぶ
               centers=3,             # クラスタの個数
               cluster_std=0.5,       # クラスタ内の標準偏差
               shuffle=True,          # シャッフル
               random_state=0)        # 乱数生成器を指定
 
plt.scatter(X[:,0], X[:,1], c='red', marker='*', s=50) #下のサンプルはblack
plt.grid()
plt.show()

 

 

 

 

 

Filed Under: 機械学習

コサイン類似度

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

コサイン類似度は、2つのベクトルがどれくらい似ているかの指標
2つのベクトル

a⃗ =(a1,a2,⋯,an)
b⃗ =(b1,b2,⋯,bn)

 

の場合以下の式になる

 

コサイン類似度を求める式

1
2
3
4
from scipy.spatial.distance import cosine
vec_a = np.array([1, 2, 3])
vec_b = np.array([2, 3, 4])
print(1 - cosine(vec_a, vec_b))

 

Filed Under: 数学

ユークリッド距離を求める

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

20121222233259

 

 

1
2
3
4
5
6
7
8
9
10
>>> import numpy
>>> x1 = 2
>>> y1 = 2
>>> x2 = 4
>>> y2 = 6
>>> a = numpy.array([x1, y1])
>>> b = numpy.array([x2, y2])
>>> u = b - a
>>> numpy.linalg.norm(u)
4.4721359549995796

 

 

二点の座標がx(x1,x2),y(y1,y2)

 

のとき、これら二つの距離はピタゴラスの定理で求める
これをn次元空間における二点間にしたものがユークリッド距離

 

 

1
2
3
4
import numpy as np
vec_a = np.array([1, 2, 3])
vec_b = np.array([2, 3, 4])
print(np.linalg.norm(vec_a - vec_b))

 

3次元で2点の座標が与えられた時2点間のユークリッド距離の求め方

  • p(10,20,30),q(30,40,50)

 

1
2
3
4
import numpy as np
vec_a = np.array([10, 20, 30])
vec_b = np.array([30, 40, 50])
print(np.linalg.norm(vec_a - vec_b))

 

上記コードは以下を計算する

 

1
 

Filed Under: 数学

線形重回帰

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
 
# データ生成
X, y = make_regression(n_samples=100, n_features=10, n_informative=3, n_targets=1, noise=5.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
 
 
# モデル構築
model = LinearRegression()
# 学習
model.fit(train_X, train_y)
# test_Xへの推測結果
print(model.predict(test_X))

 

Filed Under: 機械学習

回帰3種類[線形、ラッソ、リッジ]

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

線形単回帰とは予測したいデータと予測に使用するデータが一つづつとなる回帰分析
データ同士の関連性を示す

予測したいデータをyとすると予測用データをxとすると
y = ax + b

 

の関係性を仮定しaとbを最小二乗法という方法で分析

yの値と推定するy=ax+bの差の二乗の総和が最小となるaとbを算出

この手法はscikit-learnのlinear_modelモジュールの
LinearRegressionを使用して回帰分析を行う

 

■線形回帰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
 
# データ生成
X, y = make_regression(n_samples=100, n_features=1, n_targets=1, noise=5.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
 
 
 
# 線形回帰モデル構築
model = LinearRegression()
# 学習
model.fit(train_X, train_y)
# 係数の出力
print(model.score(test_X, test_y))

 

■リッジ回帰

1
2
3
4
5
# リッジ回帰モデル
model = Ridge()
model.fit(train_X, train_y)
# test_X, test_yに対する決定係数を出力してください
print("リッジ回帰:{}".format(model.score(test_X, test_y)))

 

■ラッソ回帰

1
2
3
4
5
# ラッソ回帰モデル(データ生成は線形回帰を参照)
model = Lasso()
model.fit(train_X, train_y)
# test_X, test_yに対する決定係数を出力してください
print("ラッソ回帰:{}".format(model.score(test_X, test_y)))

 

Filed Under: 機械学習 Tagged With: ラッソ回帰, リッジ回帰, 線形回帰

  • « Go to Previous Page
  • Page 1
  • Interim pages omitted …
  • Page 39
  • Page 40
  • Page 41
  • Page 42
  • Page 43
  • Interim pages omitted …
  • Page 66
  • 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