0
0

More than 3 years have passed since last update.

機械学習入門したけどやめたのでここにメモる

Last updated at Posted at 2020-04-13

概要

pythonを用いた機械学習を入りだけ学ぶ機会があったので、かじってはみたが、コロナの影響で通っていたスクールが中止に。。
大雑把でランダムではあるが、学んだことを記録として残させてもらいます。

機械学習とは

主にコンピュータなどに学習(ルールを学ばせる)させ、学習したことに基づいて処理(判別や予測)をさせる事。

scikit-learn

pythonの機械学習ライブラリ。機械学習のアルゴリズムが多く実装されている。
初学者が学ぶには最適なライブラリ。

Numpy

pythonの計算パッケージ。高等数学の計算を容易に行うことができる。

構文例


import numpys as np
numpy.zeros(dtype=None)   #メモリの割り当て

グラフ化

import matplotlib.pyplotモジュール
機械学習などにおいて、グラフを描写するためのモジュール

構文例

import matplotlib.pyplot

matplotlib.pyplot.scatter(データ1,データ2,  s=サイズ, c=色, marker=マーカーの形, cmap=カラーマップ, norm=None,  vmin=正規化時の最小値, vmax=正規化時の最大値, alpha=透明度, linewidths=線の太さ, edgecolors=線の色)  #散布図を描写

決定木

メリット

  • 分類ルールを樹木モデルとして可視化できるため結果の解釈が比較的容易。
  • 分類したルールを編集することもできる
  • 学習のための計算コストが低い

デメリット

  • 過学習してしまう傾向があるく
  • 扱うデータの特性によっては樹木モデルを生成することが難しい場合がある 決定木の分類器の生成

構文例

tree.DecisionTreeClassifier(分岐の深さ)

アンサンブル学習

いくつかの性能の低い分類器(弱仮説器)を組み合わせて性能の高い分類器を作る手法。この手法は2つに分類できる

  • バギング
    学習データの抜けや重複を許容して複数のグループに分割して、弱仮説器を生成する手法。その分類結果の多数決を取る。

  • ブースティング
    複数の弱仮説器を用意して重み付きの多数決で分類を実現する。
    難易度の高い学習データを分類できるように繰り返し重みを更新していく

サポートベクターマシン

分類にも会期にも使える優れた教師あり学習のアルゴリズム
学習データノイズにも強く、分類性能が非常に高いのが特徴。
分類速度は他のアルゴリズムと比べると、遅くなり、基本的には2クラスの分類器となるため、他クラスの分類を行うためには複数のサポートベクターマシン分類器を組み合わせる必要がある。

回帰問題

数値を予測する問題。学習時に入力、出力データの組から規則を学び、未知のデータに適切な出力を生成できるようにする。

線形回帰

直線的な関係を推定する回帰

非線形回帰

線形回帰ではない回帰

最小二乗法

(実際の値-予測値)**2

最小二乗法を実装したlinear_model.LinearRegression()というモジュールを使用して線形単回帰を作る。

from sklearn import svm
classifier = svm.SVC(パラメータの指定)  #分類器の生成

クラスタリング

scikit-learnのsklearn.clusterモジュールを使用する。

K-means

クラスタ数をあらかじめ設定して、徐々にクラスタ化を進める方法

from sklearn import cluster

変数 = cluster.KMeans(n_clusters=クラスタ数)  #k-meansを実行して分類器に代入
変数.fit(データ)  #クラスタ化

sklearn.datasetsモジュールの関数はBunch型のオブジェクトを返す

Bunch

sklearnのdatasetの型。

from sklearn.database.base import Bunch

Bunch(data:データ, target:ラベル) #sklearnのデータの形に変換する
copy

要素が同一の意味を持つが、元と違うメモリを使用している複製オブジェクトを返す

view

元の配列と同じメモリを使用している複製オブジェクトを返す。元の配列が変更されたら、複製したオブジェクトも変更される。メモリの節約にも使える。

globモジュール

条件を満たすファイル名、ディレクトリ名などのリストやイテレータを取得できる

pandas

データ分析用のライブラリ。主なデータ構造はSeries,DataFrameでそれぞれ1次元配列を高機能にしたような構造、後者は二次元配列でスプレッドシートに似た構造になっている。

import pandas as pd

変数 = pd.DataFrame(二次元配列) #DataFrameの作成

機械学習のsklearnではpandasの形式では使えないためndarrayのに変換して機械学習でデータを使用するためvalues、もしくはas_matrixで変換する

まとめ

色々雑にはまとめてあるので、分かりにくいが、今後機械学習を使う機会があれば色々更新しようと思う

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0