Python3

クラスタリング : DBSCAN の実装

クラスタリングアルゴリズムの中で、クラスタが球状という前提を持たずに、 クラスタラベルを割り当てる。 from sklearn.datasets import make_moons X, y = make_moons( n_samples=200, noise=0.05, random_state=0 ) plt.scatter(X[:, 0 ], X[:, 1]) plt.t…

ボトムアップ式のクラスタリングのグループ化

データ作成 shape: (5, 3) のランダム行列を作成 import pandas as pd import numpy as np np.random.seed(123) variables = ['X', 'Y', 'Z'] labels = ['ID_0', 'ID_1', 'ID_2', 'ID_3', 'ID_4'] X = np.random.random_sample([5, 3])*10 ## pandas のデー…

教師なしデータのクラスタ分析の検証

## クラスタリングのサンプルを作成 from sklearn.datasets import make_blobs X, y = make_blobs( n_samples=150, n_features=2, centers=3, cluster_std=0.5, shuffle=True, random_state=True ) ## クラスタリングを描画 plt.scatter(X[:, 0], X[:, 1], c…

アンサンブル分類器の実装

一般的に、アンサンブル分類器の方が、個別の分類器より性能が高い from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import ( StandardScaler, LabelEncoder, ) iris = datasets.load_iris(…

sklearn にて、適合率と再現率

以下の投稿で load したX_train, y_train,... を利用。 kidnohr.hatenadiary.com 適合率と再現率と F1 スコア 適合率(PRE)と再現率(REC)について、F1 スコアという性能指標が存在する。 PRE = TP / ( TP + FP ) REC = TP / ( TP + FN ) f1 = 2 * ( PRE *…

グリッドサーチを使ったチューニング

サポートベクトルマシンのパイプラインのトレーニング from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline from sklearn.model_selection import GridSearchCV …

sklearnのpipelineの使い方

make_pipelineを通して、(入力)=>(変換器(複数))=>(推定器)=>(出力) のwrapperを利用できる。 変換器は fit & transform 推定器は fit import pandas as pd from sklearn.cross_validation import train_test_split from sklearn.preprocessing import Label…

ランダムフォレストで特徴選択する方法

次元削減で特徴抽出する方法を本から抜粋 df_wine = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None) from sklearn.ensemble import RandomForestClassifier feat_labels = df_wine.columns[1:] fore…

二次元の分類結果を plot

機械学習の結果、2 個の特徴の座標と分類結果をわかりやすく図で出力している import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap def plot_dicision_regions(X, y, classifier, test_idx=None, resolusions…

.tgz のファイルを開いて読み取る方法

tarfile はZipとは違うアプローチが必要 import tarfile workpath = '/tmp/test.tgz' filename = 'test1.tsv' with tarfile.open(workpath) as tfile: if filename not in tfile.getnames(): raise Exception('No such file %s' % filename) with tfile.extr…

LDA(Latent Dirichlet Allocation) でのトピック抽出

以下の形式のsample.csvからデータを取得し、sklean の LDA でトピック抽出する。 id text 1 今日は晴れ。明日は雨 2 今日はカープが優勝した。 ... ... text2topic.py #!/usr/bin/env python # coding:utf-8 from __future__ import print_function from ti…

SolrのTermVectorsComponentでキーワード抽出してみる

tfidfを用いてなにかできないかと模索。 結果、検索で引っかかつキーワードが出てきただけ。。 The Term Vector Component | Apache Solr Reference Guide 7.1 #!/usr/bin/env python # coding:utf-8 import requests import json from heapq import heappus…

djangoのtest(django-nose, coverage)を使用する時

djangoでtestをするとき、django-nose、coverageが使える。 $ pip install nose $ pip install django-nose $ pip install coverage settigns.py INSTALLED_APPS += ['django_nose', ] TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' NOSE_ARGS = [ '--wi…

1億行のファイルを読み込む方法

ファイルを書き出す manyrowstsv.py #!/usr/bin/env python # coding:utf-8 import signal import sys import os import glob import logging import logging.handlers import shutil import tempfile import random import datetime import string import c…

最大流について

問題 s => t に最大量のデータを流す場合、最大どれだけのデータを送信できるか。 class MaxTraffic(object): def __init__(self, N=5): self.N = N self.edge = [[] for i in range(N)] self.used = [0 for i in range(N)] self.inf = 10 ** 9 def append(s…

最小値の最大化(二分探索)と、反転操作回数の最小化

面白い問題があったのでPythonで記載。 問題 1 N個の牛小屋について、M頭の牛を買っている。 x・・・牛小屋の位置 最も近い牛の間隔を最大化するためにどうするか 解法 最小・最大化問題について、収束判定するために二分探索が用いられるらしい class Inter…

Numpyのnewaxisの説明で分かりやすいのがあった

stackoverflow.com

レーベンシュタイン距離をいい感じにまとめているサイトがあった

いまさら編集距離 (Levenshtein Distance) を実装するぜ | takuti.me

最小全域木問題について(プリム法)

class MinimumSpanningTree(object): def __init__(self, v): self.v = v self.e = 0 self.mincost = [float("inf") for i in range(v)] self.cost = [[float("inf") for i in range(v)] for i in range(v)] self.used = [0 for i in range(v)] def append(s…

pip isntall で詰まった時の話

python2.6 の pip install で詰まった時の話。 HTTP Error 403: SSL is required http://pypi.python.org/simple/ で pip install しようとしている場合、 以下で指定すると、うまくいく。 $ pip install xxxx -i https://pypi.python.org/simple/ $ pip ins…

単一始点最短距離問題をPythonで解答

負の閉路が存在しない場合、更新はいずれ止まるため、この更新方法で対応できるらしい。 ## ベルマンフォード法 class BellmanFord(object): def __init__(self, v): self.e = 0 self.d = [float("inf") for i in range(v)] self.edge = [] def append(self,…

Jupyterを外部サーバに設置してアクセスする方法

以下の設定で可能。 In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: <パスワードを入力> Verify password: <パスワードを再入力> Out[2]: 'sha1:<ハッシュ化されたパスワード>' $ vim ~/.jupyter/jupyter_notebook_config.py ~…

UnionFind木のpythonでの実装

UnionFind木で同じグループのものを判定する class UnionFind(object): def __init__(self, size): self.parent = [i for i in range(size)] self.rank = [0 for _ in range(size)] def find(self, x): if self.parent[x] == x: return x else: return self.…

PriorityQueueの確認

PriorityQueueをPythonで表してみる。 こんなんで大きい順に出せるのかと思った。 class PriorityQueue(object): def __init__(self): self.l = [] def push(self, x): self.l.append(x) sz = len(self.l) i = sz - 1 while i > 0: p = (i - 1) // 2 if self…

最長共通部分問題のPythonで記述

最長共通部分問題について、pythonで解いてみた。 もしかしたら、間違っているかも class LCS(object): def __init__(self, s, t): self.s = s self.t = t self.n = len(s) self.m = len(t) self.dp = [[-1 for mm in range(self.m + 1)] for nn in range(se…

pip freezeの結果

pip freezeの結果 asn1crypto==0.22.0 beautifulsoup4==4.6.0 bleach==2.0.0 certifi==2017.4.17 cffi==1.10.0 chardet==3.0.4 click==6.7 cryptography==1.9 cycler==0.10.0 decorator==4.0.11 dj-database-url==0.4.2 Django==1.11.2 django-bootstrap-for…

JSON形式のAPIの情報をExcelに投入

#!/usr/bin/env python # coding:utf-8 import openpyxl as px import requests import json import re URL = "[API URL名]" fname = "ファイル元" num_string_pattern = re.compile(r'\d+') itemid_string_pattern = re.compile(r'\w{3}\d{4}') itemid_stri…

Jupyterをvagrantにて実行する

vagrantで $ vagrant ssh -- -L 8888:localhost:8888 vagrant で ipython notebook 環境を構築した話 · kamatari qiita.com

Pythonのコードの計測について(line-profiler)

@profile def fizzbuzz(n): if n % 3 == 0 and n % 5 == 0: return 'FizzBuzz' $ kernprof -l fizzbuzz.py 1 2 Fizz ...(省略)... 97 98 Fizz Wrote profile results to fizzbuzz.py.lprof $ python -m line_profiler fizzbuzz.py.lprof Timer unit: 1e-06 s…

Python3.6の仮想環境作成について

python3 -m venv /path/to/new/virtual/environment でいけるらしい。 stackoverflow.com