忍者ブログ

揺動経路の記録

   
カテゴリー「機械学習」の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ランダムフォレスト+特徴量選択

ランダムフォレストの特徴量重要度を元に特徴量選択を実施するサンプル
100回乱択して学習・テストを都度作成して評価を行う。

あまり変化は見られない。iris data setのためもあるかもしれない

----------------------------------------------------------------------------------------------

from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel

import matplotlib.pylab as plt
import random
import numpy as np
iris = load_iris()
ids = range(0,150)

acc_list = []
for loop in range(0,100):
    random.shuffle(ids)
    train_ids = ids[0:100]
    test_ids = ids[100:len(ids)]
    Xtrain, ytrain = iris.data[train_ids], iris.target[train_ids]
    Xtest, ytest = iris.data[test_ids], iris.target[test_ids]

    clf = RandomForestClassifier()
    clf = clf.fit(Xtrain, ytrain)
    #print "Feature importaces(base) = {0}".format(clf.feature_importances_)

    acc_test = sum([1.0 for a,b in zip(clf.predict(Xtest), ytest) if a == b]) / len(ytest)

    model = SelectFromModel(clf, 'median', prefit=True)
    Xtrain_new = model.transform(Xtrain)
    Xtest_new = model.transform(Xtest)

    clf = RandomForestClassifier()
    clf = clf.fit(Xtrain_new, ytrain)
    acc_test_new = sum([1.0 for a,b in zip(clf.predict(Xtest_new), ytest) if a == b]) / len(ytest)

    print "Feature importaces(SelecFromModel) = {0}".format(clf.feature_importances_)
    acc_list.append([acc_test, acc_test_new])

print np.mean(np.array(acc_list).T[0])
print np.mean(np.array(acc_list).T[1])

plt.plot(np.array(acc_list).T[0], '-bo')
plt.plot(np.array(acc_list).T[1], '-ro')
plt.grid()
plt.show()

----------------------------------------------------------------------------------------------
PR

t-SNE

t-SNE(t-distributed stochastic neighbor embedding)は次元圧縮アルゴリズム


import numpy as np
from sklearn import datasets
from sklearn import manifold

import matplotlib.pylab as plt

def main():
    boston = datasets.load_boston()
    """
    boston = datasets.load_boston()
    ・概要
        米国ボストン市郊外における地域別の住宅価格のデータセット。

    ・データセットの詳細
        レコード数     506
        カラム数     14
        主な用途     回帰 (Regression)
        データセットの詳細     UCI Machine Learning Repository: Housing Data Set

    ・各カラムの構成
        CRIM     人口 1 人当たりの犯罪発生数
        ZN     25,000 平方フィート以上の住居区画の占める割合
        INDUS     小売業以外の商業が占める面積の割合
        CHAS     チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外)
        NOX     NOx の濃度
        RM     住居の平均部屋数
        AGE     1940 年より前に建てられた物件の割合
        DIS     5 つのボストン市の雇用施設からの距離 (重み付け済)
        RAD     環状高速道路へのアクセスしやすさ
        TAX     $10,000 ドルあたりの不動産税率の総計
        PTRATIO     町毎の児童と教師の比率
        B     町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk – 0.63)^2
        LSTAT     給与の低い職業に従事する人口の割合 (%)
    """

    perp_list = range(5,60,5)
    for i, val in enumerate(perp_list):
        print "({0}), perplexity = {1}".format(i, val)
        model = manifold.TSNE(perplexity = val, init = "pca")
        tsne_result = model.fit_transform(boston.data)
        plt.subplot(3, 4, i + 1)
        plt.title("Perplexity = {0}".format(val))
        plt.plot(tsne_result[:,0], tsne_result[:,1], ".")
        plt.grid()

    plt.show()


if __name__ == '__main__':
    main()

Windows環境でtensorflow(in IDE(Pycharm))実行環境の構築

仮想環境VirtualBox-5.1.10-112026-Win.exe
Linuxubuntu-14.04.1-desktop-amd64.iso
  1. VirtualBoxをインストール
  2. ubuntuをインストール
  3. インストール
  4. Anaconda
  5. $ conda create --name=tensorflow python=2.7
  6. Pycharmのインストール
  7. Pycharmの設定
  • ツールバー[File]→[Setting]→[Project:***]→Project Interpreterを選択
  • anacondaで作成した仮想環境を設定(~/anaconda2/envs/tensorflow/bin/python)

プロフィール

HN:
stochaotic
性別:
非公開

最新記事

(06/17)
(05/31)
(11/09)
(03/23)
(02/11)

P R

Copyright ©  -- 揺動経路の記録 --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]