前提・実現したいこと
保存したアイリスデータの散布図の作成(6種類)
それぞれの特徴量から6種類の散布図を作成したいのですが、エラーがでて困っています。
どのようにしたらできますでしょうか。教えてください。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last)
<ipython-input-181-893180ca08ff> in <module>
33
34 if name == 'main':
---> 35 main()
<ipython-input-181-893180ca08ff> in main()
3
4 特徴量の入ったデータ (4 次元)
----> 5 features = iris.data
6 各特徴量の名前
7 feature_names = iris.feature_names
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in getattr(self, name)
5065 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5066 return self[name]
-> 5067 return object.getattribute(self, name)
5068
5069 def setattr(self, name, value):
AttributeError: 'DataFrame' object has no attribute 'data'
該当のソースコード
python
iris_data2 = pd.read_csv("iris_learn2.csv")
print(iris_data2)
SepalLength SepalWidth PetalLength PetalWidth Name
0 7.0 3.2 4.7 1.4 Iris-versicolor
1 6.4 3.2 4.5 1.5 Iris-versicolor
2 6.9 3.1 4.9 1.5 Iris-versicolor
3 5.5 2.3 4.0 1.3 Iris-versicolor
4 6.5 2.8 4.6 1.5 Iris-versicolor
5 6.3 3.3 6.0 2.5 Iris-virginica
6 5.8 2.7 5.1 1.9 Iris-virginica
7 7.1 3.0 5.9 2.1 Iris-virginica
8 6.3 2.9 5.6 1.8 Iris-virginica
9 6.5 3.0 5.8 2.2 Iris-virginica
def main():
iris = pd.read_csv("iris_learn2.csv")
features = iris.data feature_names = iris.feature_names targets = iris.target plt.figure(figsize=(12, 8)) for i, (x, y) in enumerate(itertools.combinations(range(4), 2)): plt.subplot(2, 3, i + 1) for t, marker, c in zip(range(3), '>ox', 'rgb'): plt.scatter( features[targets == t, x], features[targets == t, y], marker=marker, c=c, ) plt.xlabel(feature_names[x]) plt.ylabel(feature_names[y]) plt.autoscale() plt.grid() plt.show()
if name == 'main':
main()
の後に上記のエラーが出てきます。
試したこと
def main():
iris = datasets.load_iris()
features = iris.data feature_names = iris.feature_names targets = iris.target plt.figure(figsize=(12, 8)) for i, (x, y) in enumerate(itertools.combinations(range(4), 2)): plt.subplot(2, 3, i + 1) for t, marker, c in zip(range(3), '>ox', 'rgb'): plt.scatter( features[targets == t, x], features[targets == t, y], marker=marker, c=c, ) plt.xlabel(feature_names[x]) plt.ylabel(feature_names[y]) plt.autoscale() plt.grid() plt.show()
if name == 'main':
main()
パッケージに保存されているデータだと上手に動きましたが、保存したものだと動きませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。