[英]How to make a new prediction
讓我解釋一下,我正在使用人工神經網絡。 該模型具有15個變量,14個獨立變量和一個相關變量。 在自變量中,我有3個類別變量(day of week, month, direction(north,south, etc...))
。 我已經對它們進行編碼(monday = 1, tuesday = 2, and so...),
我也對它們進行了熱編碼(monday = [1,0,0,0], tuesday = [0,1,0,0])
。
我的問題是,我該如何用新的值進行預測,就像這樣。
X=['Monday','January','South']
這是代碼
# Classification template
# Importing the libraries
import numpy as np
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('clean.csv')
X = dataset.iloc[:, [4,5,6,9,12,15,16]].values
y = dataset.iloc[:, 14].values
#Encoding categorical Data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelenconder_X = LabelEncoder()
X[:,1] = labelenconder_X.fit_transform(X[:,1])
labelenconder_X_2 = LabelEncoder()
X[:,2] = labelenconder_X_2.fit_transform(X[:,2])
labelenconder_X_7 = LabelEncoder()
X[:,4] = labelenconder_X_7.fit_transform(X[:,4])
labelenconder_X_9 = LabelEncoder()
X[:,5] = labelenconder_X_9.fit_transform(X[:,5])
labelenconder_X_10 = LabelEncoder()
X[:,6] = labelenconder_X_10.fit_transform(X[:,6])
onehotencoder = OneHotEncoder(categorical_features=[1,2,4,5,6])
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]
# Splitting the dataset into the Training set and Test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
# Feature Scaling
#from sklearn.preprocessing import StandardScaler
#sc = StandardScaler()
#X_train = sc.fit_transform(X_train)
#X_test = sc.transform(X_test)
# Fitting classifier to the Training set
# Create your classifier here
import keras
from keras.models import Sequential
from keras.layers import Dense
classifier = Sequential()
#INPUT LAYER AND HIDDEN LAYER
classifier.add(Dense(units = 5, kernel_initializer = 'uniform', activation = 'relu', input_dim =9))
#ADDING SECOND HIDDEN LAYER
classifier.add(Dense(units = 5, kernel_initializer = 'uniform', activation = 'relu'))
#adding output node
classifier.add(Dense(units= 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
#Applygin Stochasting Gradient Descent
classifier.compile(optimizer='adam', loss = 'binary_crossentropy', metrics=['accuracy'])
classifier.fit(X_train, y_train, batch_size =28, epochs = 100)
classifier.save('ANN2.h5')
model = keras.models.load_model('ANN2.h5')
y_predict = model.predict(X_test)
y_predict = (y_predict > 0.40)
如果要對一周中的所有天進行編碼以進行預測,則monday可能應為[1,0,0,0,0,0,0]
。 或者您使用回歸(0.0-6.0)而不是分類。
但是,由於您在這里使用X
而不是y
,所以我不確定您提供的X=['Monday','January','South']
是輸入而不是輸出( y
)。 如果是這樣,則不需要單次編碼,而可以將其編碼為例如X=[0,0,2]
我同意@morsecodist的觀點,即需要更多信息才能正確回答您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.