このコードは自分でコンパイルする関数 "standRegres"を定義して線形回帰を計算するように設計されています。私たちはsklearnやstatsモデルの関数でもできるが、ここでは自分で関数を構築しようとする。しかし、残念ながら、私はエラーに直面し、それを克服できません。だから、私はここであなたの援助を求める。Python 3:回帰関数を構築するときに "ndarray is contiguous"と一致しました
コード全体が最後の行まで問題なく実行されます。最後の行を実行すると、 "ValueError:ndarrayが連続していません"というエラーメッセージが表示されます。
import os
import pandas as pd
import numpy as np
import pylab as pl
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# load data
iris = load_iris()
# Define a DataFrame
df = pd.DataFrame(iris.data, columns = iris.feature_names)
# take a look
df.head()
#len(df)
# rename the column name
df.columns = ['sepal_length','sepal_width','petal_length','petal_width']
X = df[['petal_length']]
y = df['petal_width']
from numpy import *
#########################
# Define function to do matrix calculation
def standRegres(xArr,yArr):
xMat = mat(xArr); yMat = mat(yArr).T
xTx = xMat.T * xMat
if linalg.det(xTx) == 0.0:
print ("this matrix is singular, cannot do inverse!")
return NA
else :
ws = xTx.I * (xMat.T * yMat)
return ws
# test
x0 = np.ones((150,1))
x0 = pd.DataFrame(x0)
X0 = pd.concat([x0,X],axis = 1)
# test
standRegres(X0,y)
このコードは、最後の行まで問題なく実行されます。最後の行を実行すると、 "ValueError:ndarrayが連続していません"というエラーメッセージが表示されます。
私はそれを解決するために乾いているが、どのようにわからない。私たちを手伝ってくれますか?それは非常に感謝しています!
"C連続"とか、 "Fortran連続"とは言いますか? –
@aryamccarthy「連続していない」と言うだけです。なぜそれがCかFortranかどうかは分からなかった。そして、私はまた、いくつかの男が質問をしていたときに、 "Cではない連続"の問題に会った参照してくださいstackoverflow。 –