我正在阅读一篇关于提高神经网络性能的machinelearningmastery.com 帖子,并且我正在尝试使用 sklearn 预处理 MinMaxScaler 使用帖子中提到的技巧来规范化我自己的数据集。
在我的代码中,我将一个 CSV 文件直接读入 pandas。
#read CSV file
df = pd.read_csv('C:\\Users\\desktop\\EC\\data.csv', index_col='Date', parse_dates=True)
从帖子中,我使用下面的代码对数据进行规范化。该过程似乎只返回一个 numpy 数组,但我在机器学习拟合过程中使用 Pandas。
from sklearn.preprocessing import MinMaxScaler
# create scaler
scaler = MinMaxScaler()
# fit and transform in one step
df2 = scaler.fit_transform(df)
df2 = pd.DataFrame(df2)
发生了什么,是我的列名被删除了,我在删除和选择中使用了很多列名。例如,我拟合了很多类似下面这个过程的模型来区分目标变量和输入变量。
#Test random Forest
import numpy as np
from sklearn import preprocessing, cross_validation, neighbors
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.externals import joblib
import math
rmses = []
for i in range(2):
X = np.array(df2.drop(['Demand'],1))
y = np.array(df2['Demand'])
offset = int(X.shape[0] * 0.7)
X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]
clf = RandomForestRegressor(n_estimators=120, min_samples_split=20)
clf.fit(X_train, y_train)
mse = mean_squared_error(y_test, clf.predict(X_test))
rmse = math.sqrt(mse)
print("rmse: %.4f" % rmse)
rmses.append(rmse)
print(sum(rmses)/len(rmses))
joblib.dump(clf, 'rfrModel.pkl')
但也许这不是一个投标交易......对不起,这里没有很多智慧,任何提示都有帮助。还有另一种我不需要依赖列名的疯狂方法吗?如果df2 = scaler.fit_transform(df)留下列但只是删除名称,我可以只使用列号来.drop区分目标和输入变量..Demand是我的目标变量的名称,我可以调用第二列......,对吗?

