Я пытаюсь использовать sci-kit learn впервые и, похоже, натолкнулся на препятствие, когда программа предсказывает один и тот же ответ для любого набора данных. Я нашел файл .csv со многими списками подержанных автомобилей и попытался создать модель, которая будет прогнозировать цену на основе года и пробега. Большая часть программы сортирует электронную таблицу по переменной X, которая содержит год и пробег в формате [[2014.0, 35725.0], [2013.0, 19606.0], [2013.0, 48851.0] ...] и переменную Y, которая соответствующие цены [8995.0, 10888.0, 8995.0 ...]. Эти две переменные помещаются в автомобиль MLPClassifier с помощью car.fit (X, y). Использование car.predict всегда даст одинаковый результат для любых данных, которые выглядят как [12999. 12999.] Если кто-то захочет взглянуть на этот вопрос, он будет очень признателен.
Весь код:
import csv
from sklearn.neural_network import MLPClassifier #Neural Network
y = [] #Y is car price, key
year = [] #X
mileage = [] #X
X = []
with open('true_car_listings.csv') as csv_file:
#Reads the data set and makes lists
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
line = 0
for row in csv_reader:
if line < 1000:
if line != 0:
y.append(float(row[0]))
year.append(float(row[1]))
mileage.append(float(row[2]))
line = line + 1
line_count += 1
#Set X variable
a=0
for item in year:
while a < 999:
addToX = [year[a], mileage[a]]
X.append(addToX)
a = a + 1
print('X is ' + str(X))
print('y is ' + str(y))
#Sorted into X and y variables
car = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
car.fit(X,y)
print("Training set score: " + str(car.score(X, y))) #Scores the cat MLPClassifier
print(car.predict([[2014, 94550], [2002, 22345]])) #Predicts price based on year and mileage
В результате:
X is [[2014.0, 35725.0], [2013.0, 19606.0], [2013.0, 48851.0], [2014.0, 39922.0], [2016.0, 22142.0], [2012.0, 105246]..........
y is [8995.0, 10888.0, 8995.0, 10999.0, 14799.0, 7989.0, 14490.0, 13995.0, 10495.0, 9995.0, 12921.0, 12000.0, 7750.0.............
Training set score: 0.001001001001001001
[12999. 12999.]