0

私はこのようなデータセットを持っています

    Value   Month       Year 

    103.4   April       2006
    270.6   August      2006
    51.9    December    2006
    156.9   February    2006
    126.9   January     2006
    96.8    July        2006
    183.1   June        2006
    266.6   March       2006
    193.1   May         2006
    524.7   November    2006
    619.9   October     2006
    129     September   2006
    374.1   April       2007
    260.5   August      2007
    119.6   December    2007
    9.9     February    2007
    91.1    January     2007
    106.6   July        2007
    79.9    June        2007
    60.5    March       2007
    432.4   May         2007
    128.8   November    2007
    292.1   October     2007
    129.3   September   2007

値は、1 つの地区の年間降水量です。それを地区Aとしましょう。2006 年から 2014 年までのデータ セットがあり、今後 2 年間の地区 A の降水量を予測する必要があります。sklearn ライブラリからピアソン相関と線形回帰を選択して、データを予測します。私は非常に混乱しており、X と Y を設定する方法がわかりません。Python は初めてなので、すべてのヘルプが貴重です。ありがとう

ps ..私はこのようなコードを見つけました

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model

# Load the diabetes dataset
diabetes = datasets.load_diabetes()


# Use only one feature
diabetes_X = diabetes.data[:, np.newaxis, 2]

# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

# The coefficients
print('Coefficients: \n', regr.coef_)
# The mean square error
print("Residual sum of squares: %.2f"
      % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))
# Explained variance score: 1 is perfect prediction
print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))

# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',
         linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

糖尿病_X_trainを印刷すると、これが得られます

[[ 0.07786339]
 [-0.03961813]
 [ 0.01103904]
 [-0.04069594]
 [-0.03422907]...]

これが相関と係数から得られる r 値であると仮定します。糖尿病_Y_trainを印刷すると、このようなものが得られます

[ 233.   91.  111.  152.  120.  .....]

私の問題は、降雨量からr値を取得してx軸に割り当てる方法です

4

1 に答える 1

0

最善の解決策はありませんが、うまくいきます。

ちょっとした説明: リストのインデックスに月を代入しました。これはアルゴリズムに必要です。また、「;」の区切り記号をスペースに置き換えました。行ごとにスペースの数が異なり、便利ではなかったためです。これで、データは次のようになります。

Value;Month;Year 
103.4;April;2006
270.6;August;2006
51.9;December;2006

そして、初期データのファイルは「data.csv」です。

import pandas as pd
import sklearn.linear_model as ll

data = pd.read_csv('data.csv', sep=';')
X = data.ix[:,1:3]
y = data.ix[:,0]

month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

for i, m in enumerate(data.ix[:,1]):
    data.ix[i,1] = month.index(m)

X = data.ix[:,1:3]
lr = ll.LinearRegression()
lr.fit(X, y)

######### TEST DATA ##########
X_test = [[1, 2008], [2, 2008]]
X_test = pd.DataFrame(X_test, columns=['Month', 'Year'])

y_test = lr.predict(X_test)
print(y_test)

テストの結果、この値を得ました

[69.23079837  80.63691725]
于 2016-06-06T05:37:31.953 に答える