Я использую линейную регрессию для прогнозирования значений.Я строю систему прогнозирования входа пользователя, и это часы входа каждого из пользователей.
Мой набор данных содержит следующие значения
login_hour Login_minute Login_second Login_day
11 20 30 2
11 21 45 2
11 45 10 2
Существуют тысячи таких значений, и я пытаюсь предсказать это.я использую библиотеку Sklearn, чтобы сделать прогноз, но мои выходные значения содержат плавающее число с нулем после десятичного числа.Также некоторые числа являются отрицательными, даже если в наборе данных нет отрицательных чисел.
Ниже мой код
model = LinearRegression()
try:
for users in user_list:
data = df.loc[df['user_list'] == users, 'login_hour':'login_day']
X_train, X_test = train_test_split(data, test_size=0.5, random_state=int(time.time()))
model.fit(X_train, X_test)
if not df.loc[df['user_list'] == users].empty:
X_predict = df.loc[df['user_list'] == users, 'login_hour':'login_day']
print(users)
print(model.predict(X_predict))
except Exception as e:
print(e)
Ниже вывод.
User1
[[19.20795654 30.81796908 -1.17348934 4. ]
[19.20795654 30.81796908 -1.17348934 4. ]
[19.20795654 30.81796908 -1.17348934 4. ]
[19.24304221 38.74216465 35.94425407 4. ]
[19.29593815 36.93326369 40.6377267 4. ]
[18.88357989 53.14036774 11.89626968 4. ]
[18.88357989 53.14036774 11.89626968 4. ]
[19.29593815 36.93326369 40.6377267 4. ]
[19.29593815 36.93326369 40.6377267 4. ]
[18.88357989 53.14036774 11.89626968 4. ]
[19.43300738 28.03476807 37.10549659 4. ]
[19.43300738 28.03476807 37.10549659 4. ]
[19.43300738 28.03476807 37.10549659 4. ]
[19. 50. 51. 4. ]
[19. 50. 51. 4. ]
[19. 50. 51. 4. ]]
User2
[[ 1.96245603e+01 8.73215646e+00 5.32679614e+00 4.00000000e+00]
[ 1.96245603e+01 8.73215646e+00 5.32679614e+00 4.00000000e+00]
[ 1.90995539e+01 3.32999402e+01 2.32454303e+01 4.00000000e+00]
[ 1.90995539e+01 3.32999402e+01 2.32454303e+01 4.00000000e+00]
[ 2.05057605e+01 -2.92241595e+01 -1.76151096e+01 4.00000000e+00]
[ 1.97164859e+01 1.09897454e+01 1.64568207e+01 4.00000000e+00]
[ 1.87643468e+01 3.99670330e+01 1.50683761e+01 4.00000000e+00]
[ 1.88341735e+01 3.99791100e+01 1.98189050e+01 4.00000000e+00]
[ 1.91961218e+01 3.78000218e+01 3.95673183e+01 4.00000000e+00]
[ 1.91006661e+01 4.22668915e+01 4.28252518e+01 4.00000000e+00]
[ 1.82946119e+01 7.81641824e+01 9.76385715e+01 4.00000000e+00]
[ 2.00000000e+01 -4.54747351e-13 4.30000000e+01 4.00000000e+00]
[ 2.00000000e+01 -4.54747351e-13 4.30000000e+01 4.00000000e+00]
[ 2.00000000e+01 -4.54747351e-13 4.30000000e+01 4.00000000e+00]]
Вопрос
Вы можете видеть такие значения, как 4.
и 50.
, почему они пропускают значения после десятичной дроби и как их получить4.0
или что-то.Также возможно ли ограничить вывод только двумя знаками после запятой или даже нулем?
Также некоторые из моих выходных значений являются отрицательными, как -4.54747351e-13
.У меня нет никаких отрицательных значений в наборе данных, но мой вывод имеет.Кто-нибудь может дать мне причину, почему?