web-dev-qa-db-ja.com

Spyder Python "オブジェクト配列は現在サポートされていません"

Anaconda Spyder(Python)に問題があります。

オブジェクトタイプの配列は、Windows 10では変数エクスプローラーに表示されません。 XまたはYをクリックすると、エラーが表示されます。

オブジェクト配列は現在サポートされていません。

Win 10 Home 64ビット(i7-4710HQ)とPython 3.5.2 | Anaconda 4.2.0(64ビット)[MSC v.1900 64ビット(AMD64)]

Screenshot

30
Honza

Spyder開発者はこちら)Spyderにオブジェクト配列のサポートが追加されます4、2019年にリリース予定です。

23
Carlos Cordoba

良い例はこちら

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset = pd.read_csv('Salary_Data.csv') #in your case right name of your file
X=dataset.iloc[:,:-1].values   #this will convert dataframe to object
df = pd.DataFrame(X)

データフレームでデータを表示できます。これにより、arrrayがデータフレームに変換されます。

また、変数Explorerはデータフレームを受け入れます。上記は正しいコードです

25
Aviator

dataFrame.valuesなしで同じものを使用しました。
それは私のために働いた。

x = dataset.iloc[:, :-1]
y = dataset.iloc[:,3]
12
user10264987

解決策:スパイダーのバージョンを3.2.0にダウングレードします

これを行うには、anaconda-navigatorにアクセスします。

機械学習に関するUdemyコースを受講している場合、おそらくインストラクターは古いバージョンのスパイダーを使用しており、彼のために働いています。 3.2.8などの新しいバージョンでは機能しませんが、将来のバージョンに組み込むことができます。

9
kaushalpranav

point が失敗するまでコードを分析しました。

Spyderの配列エディターは、混合型の配列(オブジェクト配列)の表示をサポートしていないようです。

ここで サポートされている形式 を見ることができます。

初めて使用したときに混乱を招きました。データセットをクリックすると、配列変数をクリックしても同じエディターが表示されます。

タイプarrayの変数の場合、ArrayEditorウィジェットを受け取ります。呼び出しが行われたと思います ここ

ただし、タイプDataFrameの変数の場合、DataFrameEditorを受け取ります。呼び出しが行われたと思います ここ

問題は、両方のウィジェットがほぼ同じに見えるため、両方のケースで同じ結果を受け取ると考える傾向がありますが、DataFrameEditorは混合型を許可し、ArrayEditorではありません。

適切なウィジェットのサポートがSpyderで最終的にリリースされるまで、IPythonコンソールで配列変数を検査することができます。

6
yucer

次のコードを使用します。

dataset = pd.read_csv('Data.csv')
X = pd.DataFrame(dataset.iloc[:, :-1].values)
4
gsyal

変数の型が同じでなく、変数エクスプローラーでこれがオブジェクトとして表示される限り、変数は同じ場合に同じ型に変換する必要があることを意味します。 fit_transform()を使用して修正できます。

そのチュートリアルのコードの関連部分は次のとおりです。

from sklearn.preprocessing import LabelEncoder , OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_1.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
4
EqSan

これは、配列に複数のデータ型があるため、単一の型を選択できないため、複数のデータ型を持つオブジェクトを表示できないためです。それを見ることができます。

4
Puru Agarwal

Spyderで変数ビューアーをバイパスするには、2つの方法があります。あなたはどちらか

A)「print(X)」を使用してXの内容を明らかにする、または

B)Xを入力してReturnキーを押すだけで、IPythonコンソールを簡単に使用できます。これにより、説明したML関数が機能しているかどうかを迅速に明らかにすることができます。

3
Joe Almeida

スパイダーの更新バージョンでは、変数エクスプローラーを使用して混合配列を表示できなくなりました。代わりにコンソールで配列を印刷して検査できます。

2
Avi

Spyderではまだサポートされていませんが、変数名を直接入力することにより、IPyhon Consoleを使用してこれらの値を印刷できます。

2
Gurbaksh Singh

これは私のために働いた:

import pandas as pd
labels = pd.read_csv('labels/labels.csv')
# object arrays are currently not supported exception
breeds = labels.breed.unique()
# Supported Version 
# working fine
breeds = pd.DataFrame(labels.breed.unique())
1
Anubhav Singh

追加

X = pd.DataFrame(X)

xオブジェクトをデータフレームに変換し、スパイダーでもエラーなしでチェックできるようにします。

私のために働いた!

1
Keya Kashem

y、つまりx[: , 0] = labelencoder_x.fit_transform(x[:,0])と同じようにx変数に正確なフォーマットを使用することを主張し、y[:] = labelencoder_y.fit_transform(y[:]) *(taking into account the syntax for the fit transform for y)*を使用したため、同様の問題が発生しました。

上記により、y_testおよびy_train"object"のdtypeが作成されました。これらは、変数ExplorerのSpyderでは表示できません。

インストラクターが使用する正確な行を使用した場合:y = labelencoder_y.fit_transform(y)。 dtypeは、変数Explorerで表示できるint64に変更されました。

1
Laevashan

データが同じタイプの例intまたはfloatの場合、変数Explorerに表示されます。そうでない場合、たとえばデータにstringとintがある場合はサポートされません。

ただし、データをチェックするソリューションがあります。IPythonConsoleで実行できます。

0
Krishan

同じ問題がありました。問題は行だった

oneHotEncoder.fit_transform(X).toarray()

これは、データをX配列に割り当てません。代わりに、次の行で問題を修正する必要があります。

X=oneHotEncoder.fit_transform(X).toarray()
0
davyPy

これは、データがエンコードされていないためです。すべてのカテゴリデータを「エンコード」する必要があります。 sypder( https://i.stack.imgur.com/uApwt.jpg )の変数Explorerのデータを見ると、Xには国に関するデータが含まれていることが明らかです([France 、44.0、72000])。したがって、国の名前をエンコードする必要があり、同様にyには「Yes」または「No」が含まれているため、エンコードする必要もあります

行21の後に次のコードを追加すると、オブジェクト配列が表示されます。

# Encoding categorical data

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

'''
To prevent the machine learning equations from thinking 
(if there are more than one country) that one country is greater than 
another, use the concept of dummy variables    
''' 
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

'''
Since y is dependent variable, the machine learning model will know 
that its a category, so we are going to use only the LableEncoder()
'''
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
0
shivp0616