質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

3776閲覧

pythonで2色のプロットのグラフを作りたい

tetuwan28emon

総合スコア15

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

1クリップ

投稿2017/11/30 10:54

編集2017/11/30 12:56

###前提・実現したいこと

pythonで画像の主成分分析を行うシステムを作っています。その中で画像を危険と安全、危険を赤、安全を青と表示するようなグラフを作りたいと思っています。

###該当のソースコード

python

1import numpy as np 2from sklearn.cluster import KMeans 3from sklearn.decomposition import PCA 4import matplotlib.pyplot as plt 5import pandas as pd 6 7users = np.loadtxt('/home/srl/mimamori1/b1/bb1.csv', delimiter=",") 8model = KMeans(n_clusters=2).fit(users) 9pca = PCA(n_components=2) 10users_r = pca.fit_transform(users) 11 12plt.figure() 13for (i, label) in enumerate(model.labels_): 14 if label == 0: 15 plt.scatter(users_r[i, 0], users_r[i, 1], c='red') 16plt.xlabel('pc1') 17plt.ylabel('pc2') 18 19plt.show()

###やりたいこと
csvファイルbb1.csvとは別にbb2.csvなるものを読み込み。
まとめてPCAをかけてbb1.csvの出力を青色でプロット、bb2.csvの出力を赤色でプロットするようなグラフを作成するコードを作りたいです。

どのようなコードを追加すれば希望の出力を得ることができるでしょうか?
またcsvの編集は必要でしょうか?

###補足
bb1.csvには危険状態の80×40ピクセルの写真2000枚を配列化し、1画像データごとに1列に並べたものをcsvに格納しています。
bb2.csvには安全状態の写真2000枚のデータをbb1と同じ加工をしたものを格納しています。

これらのデータのPCAを行うのは分類のためというより、危険と安全では違った特徴量を持っているのではないかと仮定し、どのような特徴量を持っているか観る為にPCAを行います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakame

2017/11/30 11:53

質問から察するにbb1.csvに危険?な画像情報が格納されて、bb2.csvに安全?な画像情報が格納されているということでしょうか?
wakame

2017/11/30 11:55

あと分類されている状態からさらに教師なし学習(Kmeans)で分類しようとしているのがよくわからなかったです。
tetuwan28emon

2017/11/30 12:56

回答有り難うございます。補足に記入致しました。
magichan

2017/12/01 03:06 編集

やはりよくわかりません。 bb1をPCAかけた結果:青色、bb2をPCAかけた結果:赤色 なのでしたら、Kmeansの結果はどのようにグラフに反映するのでしょうか? 質問にあるコードは Kmeansの結果で色分けしようとしているように見えますが。
tetuwan28emon

2017/12/02 10:49

システムの構築の為に、ひとまずPCAをかけてみようということでネットに落ちていたコードをそのまま使っていました。確かに分類済みのデータに対してKmeansを使う意味がありませんね。勉強不足でした。
guest

回答1

0

ベストアンサー

すでに「危険」「安全」とカテゴライズ済みのデータについて、2つのカテゴリ間の比較をしようという話と受け取りました。であれば、magichanさんからも指摘がありますが、ここでKMeansが登場する必要性は感じられません。
scatterのcオプションで要素ごとの色を指定してやれば良いだけのはずです。
下のような雰囲気で。

python

1# usersにはbb1,bb2の全データを入れておく。 2users_r = pca.fit_transform(users) 3 4# 前半2000(bb1からのデータ)と後半2000(bb2からのデータ)にそれぞれ色コードを割り当て 5ccode = [1]*2000 + [2]*2000 6plt.scatter(users_r[:, 0], users_r[:, 1], c=ccode)

投稿2017/12/01 04:17

KojiDoi

総合スコア13676

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetuwan28emon

2017/12/02 10:50

期待どおり色分けができました、ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問