Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

2019-01-01から1年間の記事一覧

scikit-learnの回帰分析でマンション価格を予測する

scikit-learnの回帰分析で緯度、標高から気温を予測すると同じく、scikit-learnで重回帰分析を行います。海浜幕張駅の中古マンション価格を題材に、説明変数として駅からの徒歩時間、広さ、築年数、目的変数としてマンション価格を用います。 すなわち説明変…

scikit-learnの回帰分析で緯度、標高から気温を予測する

scikit-learnを用いて回帰分析を行います。回帰分析は数値の予測を行う手法で、入力(説明変数)と出力(目的変数)の関係を求めて、その関係に基づいて未知の入力値に対する出力値を予測します。ここでは説明変数として緯度と標高、目的変数として2019年1月の平…

写真のexifから緯度・経度を取得して地図上にマークする

写真のexifから緯度・経度を取得する の続きで、写真のexifから取得した緯度・経度を地図上にマークします。モジュールfoliumを使用します。 その際、緯度・経度はそれぞれ小数点で与えるため、度分秒から換算します。 北緯(35度5分32.29秒)→35+5÷60+32.29÷3…

写真のexifから緯度・経度を取得する

写真のexif情報から撮影場所の緯度・経度を取得します 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 準備 スマホで撮影したこちらの写真を使います。撮影場所は静岡県熱海市の港です。 コード Pillowの_getexif() メソッドでexif情…

画像をグラデーションをつけて合成する

2枚の画像をグラデーションを付けて合成します。opencvのメソッドcv2.addWeightedを使います。片方の画像のウエイトを左→右で減らし、もう片方の画像のウエイトを逆に左→右で増やすことで左右にウエイトを変えて合成します。合成する画像は同じサイズでない…

ディープラーニングで近藤春菜、角野卓三、マイケルムーアを判別する(Kerasで画像分類)

PythonのディープラーニングライブラリtensorflowのラッパーKerasを使いディープラーニングの1手法であるCNN(畳み込みニューラルネットワーク)による画像分類を行います。近藤春菜、角野卓三、マイケルムーアの画像を学習させ3者を分類できるか試します。

VGG16を用いた画像分類

画像のディープラーニング学習済みモデルVGG16を用いて画像の分類を行います。VGG16は140万個のラベル付き画像と1000種類のクラスからなるImageNetデータセットを用いたCNN(畳み込みニューラルネットワーク)学習済みモデルです。Pythonのディープラーニング…

形状の異なる数字画像を大量に生成する

機械学習を行うためには大量の学習データが必要になります。0-9の10個の数字画像を大量に生成します。以下のパラメータを変えた32x32pxの画像を4320個生成しpngファイルで保存します。 数字(0-9)・・・10 フォント・・・8 文字のx位置・・・3 文字のy位置・…

ヒストグラム平坦化・コントラスト制限付適応ヒストグラム平坦化によるカラー画像のコントラスト補正

明るい画像では明度の分布は明るい方に集中しており、暗い画像では明度は暗い方に集中しています。この明度の分布(ヒストグラム)を広げて明るさをまんべんなくする方法がヒストグラム平坦化で、画像のコントラスト調整ができます。 OpenCVではメソッドcv2.eq…

K-means(K平均法)で花の写真を色でクラスタリングする(全画素を特徴量に使う)

K-means(K平均法)で花の写真を色でクラスタリングする では画面全体のBGRの比率を特徴量として用いましたが、全画素のBGR値をそのまま特徴量に用いてクラスタリングをします。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV …

K-means(K平均法)で花の写真を色でクラスタリングする

K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単…

ライブラリqrcodeでQRコードを生成する

ライブラリqrcodeを使うことでQRコード(2次元バーコード)がPythonで簡単に作成できます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 qrcode 6.1 Pillow 5.2.0 準備 ライブラリqrcodeをAnaconda Promptよりインストールします。 …

TF-IDFとコサイン類似度により文書の類似度を判定する

Pythonの機械学習ライブラリscikit-learnを使って文書の類似度を求めます。文書中に含まれる単語が「その文書内でどれくらい重要か」を表す尺度であるTF-IDFにより、すべての単語を次元とした文書ベクトルを作成します。文書ベクトル同士のコサイン類似度を…

word2vecでコパアメリカ 日本vsチリ戦の敗因を分析する

word2vecでコパアメリカ 日本vsチリ戦の敗因を分析します。word2vecは文章中の単語をベクトル化する技術で、関連する単語の抽出や単語同士の類似度を調べたり単語の線形計算ができるようになります。ベクトル化処理をするためには単語の区切りを示す必要があ…

ルックアップテーブルによる画像の減色

画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。 元画像はBGRそれぞ…

特定チャンネルをガンマ補正し画像の色味を変える

画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。 特定のチャンネル(…

K-Meansクラスタリングによる画像の減色

K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単…

画像をグニャグニャにする(各行をsinカーブでx方向にずらす)

画像をグニャグニャにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にsinカーブでずらすことでグニャグニャに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 画像をザーザーにする(各行をランダム…

画像をザーザーにする(各行をランダムにx方向にずらす)

画像をザーザーにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にランダムにずらすことでザーザーに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 環境 windows10 home Anaconda 3/ jupyter note…

波線を描く

波線を描きます。波線の絵を使いたくなることが結構ありますが、いざ描こうと思うと面倒です。なのでpythonで作成してみます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import numpy as np import math i…

画像を斜めに変形する

画像を斜めに変形します。画像を読み出し別のndarrayに1行ずつコピーしますがその際にx方向に1pxずつずらすことで斜めに変形した画像を生成します。 関連記事 黒画像を作成する 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV…

numpyで乱数生成(一様分布、正規分布)

numpyの乱数生成関数であるrandomを用います。一様分布、標準正規分布(平均0、分散1である正規分布)および任意の平均・標準偏差を持つ正規分布を生成し、ヒストグラムで表示します。 使ったメソッド numpy.random : 乱数生成 環境 windows10 home Anaconda 3…

文字列にアルファベットがそれぞれ何個含まれているか数える

文字列にアルファベットの小文字(a-z)と大文字(A-Z)がそれぞれ何個ずつ出現するか数えます。for文で文字コードを回して.count()メソッドにより出現回数をカウントします。 使ったメソッド .count() : 文字列の出現回数を求める 環境 windows10 home Anaconda…

回転を考慮した外接矩形を描画する

Pythonの画像処理ライブラリOpenCVの領域検出機能を使って回転を考慮した外接矩形(長方形)を算出します。findContoursにより領域を検出しminAreaRectにより検出した領域に対する外接矩形を求めます。

ナップサック問題を解く(貪欲法)

ナップサック問題とは、ナップサックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場…

ナップサック問題を解く(ライブラリknapsackを使用)

ナップサック問題とは、ナップサックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場…

食べログ全国ランキングTOP20の星をジャンル別に比較する

食べログの全国ランキングTOP20の星(レーティング)をフレンチ、ラーメン、寿司、天ぷらの4ジャンルで集計・比較し、どのような傾向にあるかを調べます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 コード %matplotlib inline # …

Yahooニュース・アクセスランキングの見出しを取得し頻出単語を調べる

Yahooニュースのアクセスランキングページの見出しを取得し、出てくる名詞を出現回数順に表示し、何に関するニュースが興味を持たれているのかを調べます。 アクセスランキングページのスクレイピング→形態素解析し名詞のみ取得→出現が高い順に並べる→グラフ…

特定の色を別の色に変換する(赤い服を緑の服に変える)

赤い服を着た人物写真の服の色を緑や青に変えます。Pythonの画像処理ライブラリOpenCVで画像をBGR色空間からHSV色空間に変換し、ライブラリnumpyのwhereメソッドにより色相Hが赤の範囲にある画素についてHをシフトさせることで赤を緑や青に変換します。

写真をミニチュア風に加工する

ミニチュア写真の特徴として、斜め上から撮影されている、コントラストが強い、上下がぼけている、があります。斜め上から撮影した写真をPythonの画像処理ライブラリOpenCVでコントラスト強調処理と上下のぼかし処理をすることでミニチュア風に加工できます。