2016-04-01 8 views
3

私はPythonを使って線形回帰を実装しようとしています。その後、私は共同efficientsを取得しようとすると、以下を使用しPythonを使った線形回帰(Pandas and Numpy)

import pandas as p 
import numpy as n 
data = p.read_csv("...path\Housing.csv", usecols=[1]) # I want the first col 
data1 = p.read_csv("...path\Housing.csv", usecols=[3]) # I want the 3rd col 
x = data 
y = data1 

私は、次の手順を行った

regression_coeff = n.polyfit(x,y,1) 

そして私は次のエラーを取得:

raise TypeError("expected 1D vector for x") 
TypeError: expected 1D vector for x 

xとを印刷すると、私は頭に浮かべることができません。、私は彼らが両方とも1Dベクトルであることを非常にはっきりと見ることができます。

誰かが助けてくれますか?

データセットはここで見つけることができる:DataSets

元のコードは次のとおり

import pandas as p 
import numpy as n 

data = pd.read_csv('...\housing.csv', usecols = [1]) 
data1 = pd.read_csv('...\housing.csv', usecols = [3]) 

x = data 
y = data1 
regression = n.polyfit(x, y, 1) 
+2

は何も*ありませんし、次のように使用します:あなたは、単に.squeeze()を使用してnp.polyfit()入力フォーマットに一致するようにpd.Seriesread_csv()の出力を変換することができます*: –

+0

私はあなたを取得できませんでした。 –

+2

あなたのコードを貼り付けるのを忘れたのかもしれません。 –

答えて

4

これは動作するはず:

np.polyfit(data.values.flatten(), data1.values.flatten(), 1) 

dataはデータフレームであり、その値は2Dである:

>>> data.values.shape 
(546, 1) 

flatten() 1Dアレイにそれを回す:

polyfit()ために必要とされる
>> data.values.flatten().shape 
(546,) 

よりシンプルな代替:

df = pd.read_csv("Housing.csv") 
np.polyfit(df['price'], df['bedrooms'], 1) 
+0

ありがとうたくさんのマイク:)それは完全に働いた。あなたがflatten()を追加したときになぜそれがうまくいったのか教えてください。実際に何をしましたか? –

+0

いくつかの説明を追加しました。 –

2

Pythonは、データが適切なフォーマットになっていないことを言っているが、特定のxに1次元配列でなければなりません、あなたのケースでは、2Dっぽいパンダの配列です。 numpy配列でデータを変換し、問題を解決するためにそれを絞ることができます。

import pandas as pd 
import numpy as np 

data = pd.read_csv('../Housing.csv', usecols = [1]) 
data1 = pd.read_csv('../Housing.csv', usecols = [3]) 
data = np.squeeze(np.array(data)) 
data1 = np.squeeze(np.array(data1)) 

x = data 
y = data1 
regression = np.polyfit(x, y, 1) 
+0

2Dish配列はどうですか?私は1つのコラムだけを取っていることがはっきりと分かる。私をより良い理解に導いてください。 –

2

pandas.read_csv()np.polyfitは、単一のフィット感のためxyの両方のための1D vectorを望んでいる間、2次元を有し、DataFrameを返します。

data = pd.read_csv('../Housing.csv', usecols = [1]).squeeze() 
data1 = p.read_csv("...path\Housing.csv", usecols=[3]).squeeze() 
+0

完璧に作業しました。しかし、基本的な背景を教えてもらえますか、少なくとも参照して学習する場所へのリンクを提供できますか? –

+0

関連するドキュメントへのリンクを追加しました。 – Stefan