I created sample training data with set of random numbers and their squares. But when I predict square of a new number, none of the sklearn models are predicting it correctly. Given below is my sample code.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
x = []
y = []
# Generate lot of random integers for train data
x = np.random.randint(10, 1000, (500, 1))
# print (x)
# Generate square for each integer and save in train data
for i in x:
y.append(i[0] * i[0])
# print(x, y)
# List of Algorithms
models = []
models.append(('LinearRegression', LinearRegression()))
models.append(('LogisticRegression', LogisticRegression()))
models.append(('KNeighborsClassifier', KNeighborsClassifier()))
models.append(('DecisionTreeClassifier', DecisionTreeClassifier()))
models.append(('GaussianNB', GaussianNB()))
models.append(('SVC', SVC()))
# Loop through models and identify the best model to predict square
for name, model in models:
model.fit(x, y)
x_predict = 7
y_predict = model.predict(x_predict)
print(name, y_predict)
My Output is as below:
LinearRegression [-164374.36815163]
LogisticRegression [100]
KNeighborsClassifier [100]
DecisionTreeClassifier [100]
GaussianNB [100]
SVC [100]
What am I doing wrong? Is it not possible to use sklearn models to predict simple square pattern? Please help.