做預測和測試在多個文件,我想訓練一個模型,並最終預測使用three column dataset(的random forest model in Python
真值點擊鏈接下載完整CSV
-dataset格式化爲以下Python的 - 如何使用sklearn
t_stamp,X,Y
0.000543,0,10
0.000575,0,10
0.041324,1,10
0.041331,2,10
0.041336,3,10
0.04134,4,10
0.041345,5,10
0.04135,6,10
0.041354,7,10
我想使用最後一個(例如:5,10,100,300,1000,...等)來預測Y
(真值)的電流值數據的X
點使用的sklearn
random forest model
在Python
。含義[0,0,1,2,3]
的X
列作爲inp ut爲第一個窗口 - 我想預測Y
的Y
以前的值訓練的第五行值。
比方說,我們有5個痕跡在當前目錄中的數據集(a1.csv,a2.csv,a3.csv,a4.csv和a5.csv)的。對於單個跟蹤(數據集)(例如,a1.csv) - I可以做5窗口的預測,如下
import pandas as pd
import numpy as np
from io import StringIO
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score
import math
from math import sqrt
df = pd.read_csv('a1.csv')
for i in range(1,5):
df['X_t'+str(i)] = df['X'].shift(i)
print(df)
df.dropna(inplace=True)
X=pd.DataFrame({ 'X_%d'%i : df['X'].shift(i) for i in range(5)}).apply(np.nan_to_num, axis=0).values
y = df['Y'].values
reg = RandomForestRegressor(criterion='mse')
reg.fit(X,y)
modelPred = reg.predict(X)
print(modelPred)
print("Number of predictions:",len(modelPred))
modelPred.tofile('predictedValues1.txt',sep="\n",format="%s")
meanSquaredError=mean_squared_error(y, modelPred)
print("Mean Square Error (MSE):", meanSquaredError)
rootMeanSquaredError = sqrt(meanSquaredError)
print("Root-Mean-Square Error (RMSE):", rootMeanSquaredError)
我已經解決了這個問題random forest
,其產生df
:
rolling_regression')
time X Y X_t1 X_t2 X_t3 X_t4
0 0.000543 0 10 NaN NaN NaN NaN
1 0.000575 0 10 0.0 NaN NaN NaN
2 0.041324 1 10 0.0 0.0 NaN NaN
3 0.041331 2 10 1.0 0.0 0.0 NaN
4 0.041336 3 10 2.0 1.0 0.0 0.0
5 0.041340 4 10 3.0 2.0 1.0 0.0
6 0.041345 5 10 4.0 3.0 2.0 1.0
7 0.041350 6 10 5.0 4.0 3.0 2.0
.........................................................
[2845 rows x 7 columns]
[ 10. 10. 10. ..., 20. 20. 20.]
RMSE: 0.5136564734333562
但是,現在我想通過將訓練分爲60%的數據集來預測所有文件(a1.csv,a2.csv,a3.csv,a4.csv和a5.csv)文件名開始a
和測試的文件名,其餘40%開始,在使用sklearn
(意思是3條曲線將用於訓練,2條曲線用於測試)?
PS:所有文件具有相同的結構,但它們是具有不同的長度爲它們與不同的參數產生的。
是否所有文件都具有相同的結構('t_stamp,X,Y')?然後將所有數據附加到一個數據框中,然後分成列車和測試。 –
是的,所有文件具有相同的結構,但它們具有不同的長度,因爲它們是用不同的參數生成的。編輯我的問題。謝謝。 – Mahsolid
@Mahsolid是的。這很簡單。 –