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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

521閲覧

irisデータの分類

874-3175-8...

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/25 06:56

前提・実現したいこと

irisデータについて、特徴量4つ全てを用いて、クラス0とクラス1を分類するプログラムを作りたいのです。ただ、どのように4次元のデータ分析を行えばよいのかわかりません。特徴量2つであれば普通にできますが、そもそも4次元のデータ分析は可能なのでしょうか。可能であれば、方針だけでもいいので教えてください。

入力コード

from sklearn import datasets iris = datasets.load_iris() X = iris.data[iris.target!=2] y = iris.target[iris.target!=2]

ここからどうすればいいのか全く分かりません。

補足情報

実行環境はGoogle Colaboratoryです。

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

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

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

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

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

guest

回答4

0

これは2次元だから直線で考えることができましたが、それより大きい次元(ここでは4次元)ではどうすればいいのだろう、と思った次第です。

主成分分析が、あなたの求める回答ではないでしょうか。

まさに同じデータを用いて解析・解説した記事
https://logics-of-blue.com/principal-components-analysis/

投稿2021/05/30 15:10

KojiDoi

総合スコア13692

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

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

874-3175-8...

2021/06/02 04:50

返信遅くなってすいません、ありがとうございます。
guest

0

ベストアンサー

特段凝ったことをしなくてもscikit-learnのclassifierでそのまま扱うことができます。(サンプル数, 4)の配列をそのままXとして渡して問題ありません。

投稿2021/05/26 01:41

hayataka2049

総合スコア30935

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

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

874-3175-8...

2021/05/26 01:51

ありがとうございます。Scikit-learn の分類器を使って分類することはできました。 自作のプログラムでも分類したいのですが、特徴量が4次元だとどのように入力すればいいでしょうか。大まかでもいいので教えてください。
hayataka2049

2021/05/26 03:49

自作のプログラムとはどういったものでしょうか?
874-3175-8...

2021/05/26 04:08

説明不足ですいません。 自分は以下のようにして、2次元データの予測器を作りました。 from sklearn.base import BaseEstimator, ClassifierMixin class DIYClassifier08( BaseEstimator, ClassifierMixin ): """クラス0かクラス1かを分類する。""" def __init__(self, a=0.5, b=0.2): self.a = a self.b = b def fit(self, X, y): return self def predict(self, X): "2次元の点 (x1, y1)について,y1 <= a * x1 + b ならば 1,そうでなければ 0 と予測する。" pred_y = np.zeros(len(X), dtype=int) for i, value in enumerate(X): (x1, y1) = value if y1 <= self.a * x1 + self.b: pred_y[i] = 1 return pred_y これは2次元だから直線で考えることができましたが、それより大きい次元(ここでは4次元)ではどうすればいいのだろう、と思った次第です。 自作では無理でしょうか。 長くなってしまいすいません。
874-3175-8...

2021/05/26 04:38

Scikit-learn の分類器を使わずに、分類の関数を自分で作りたいということです。
hayataka2049

2021/05/26 05:01

線形分類器でしょうか? その場合は、係数をベクトルで表すようにすると良いでしょう。
874-3175-8...

2021/05/26 05:38

何度もすいません、係数をベクトルで表すというのが分かりません。全くの初心者なので、具体的にどういうことなのか教えてもらえると助かります。お願いします。
hayataka2049

2021/05/30 15:16 編集

すみません、返信が遅くなりました。 識別関数を、たとえばy <= w0 + x1*w1 + x2*w2 + x3*w3 + x4*w4という風に構成します。実装としてはnumpy配列として保持するのが楽ですが、難しく感じるのであればlistに入れておいてループで計算しても良いでしょう。 線形判別分析などを調べれば参考になる情報が得られるかと思います。
jbpb0

2021/05/30 15:22 編集

質問者さん > 2次元だから直線で考えることができましたが、それより大きい次元(ここでは4次元)ではどうすればいいのだろう 2次元:線 3次元:面 4次元以上:超平面 で分けます https://kenyu-life.com/2019/02/11/support_vector_machine/ の「サポートベクターマシンSVMとは」を見てください 「サポートベクターマシン」というのは、分ける線や面の決め方の手法の一つですが、決め方はどのような手法を使おうと、分け方は上記の通りです
874-3175-8...

2021/06/02 04:50

返信遅くなってすいません、ありがとうございます。
guest

0

投稿2021/05/25 15:36

編集2021/05/26 01:51
jbpb0

総合スコア7653

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

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

874-3175-8...

2021/05/26 01:49

ありがとうございます。参考になりました。
guest

0

4次元のデータ分析は可能です。
以下、参考ページに良いかと思います。
https://qiita.com/ao_log/items/fe9bd42fd249c2a7ee7a

投稿2021/05/25 07:04

goto_yuta_

総合スコア211

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

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

874-3175-8...

2021/05/25 10:25

ありがとうございます。 4C2 = 6(通り)の組み合わせの中から一つを自分で選ぶということでいいでしょうか。
874-3175-8...

2021/05/25 11:35

4つすべてを同時に扱うことはできないのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問