ValueError: не удалось преобразовать строку в число с плавающей точкой: при загрузке данных с сервера sql в Predict () - PullRequest
0 голосов
/ 23 декабря 2018

Я использую SKLEARN & Pandas для загрузки набора данных для прогноза.На тренировочных данных это работает как шарм, проблема возникает тогда, когда.Я передаю фрейм данных, чтобы предсказать функцию (я загружаю эти данные непосредственно с сервера SQL). Ошибка:

ValueError: не удалось преобразовать строку в число с плавающей точкой: 'MESSAGE: отправьте мне письмо. \ R'

    import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import re
import csv
import pyodbc

server = "{10.66.74.80}"
db = "{SMS}"
con = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + db)

query = "SELECT Prediction,Message from HC_followup where prediction in ('Sat','Dis_Sat')"
df = pd.read_sql(query, con)
df.head()

train_df,test_df=train_test_split(df,test_size=0.2,random_state=0)

train_df.loc[train_df['Prediction']=='Dis_Sat','Prediction']=0
train_df.loc[train_df['Prediction']=='Sat','Prediction']=1

X=train_df['Message']
X.head()
train_y=train_df['Prediction'].values
train_y=train_y.astype(np.int)
train_y[:]

from sklearn.feature_extraction.text import CountVectorizer
count_vec=CountVectorizer()
count_vec
count_vec.fit(X)
train_x=count_vec.transform(X).toarray()
train_x[:]
train_x.shape

from sklearn.linear_model import LogisticRegression
lr_clf=LogisticRegression()
lr_clf
lr_clf.fit(train_x,train_y)
server = "{W10HSVQXX1}"
db = "{test}"
con = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + db)
 query = "select Message from [dbo].[followup] where prediction ='Un-Known'"
df_test = pd.read_sql(query, con)
df_test.head()
cnt=CountVectorizer()
cnt
print(df_test.shape)
res=lr_clf.predict(count_vec.transform(df_test))
print(res)
if res==0:
     print("Customer Is Dis_Sat")
if res==1:
     print("Customer Is Sat")
print("Accuracy Percentage : ",lr_clf.score(train_x,train_y)*100,'%')

Примечание: Модель уже обучена и установлена.

Открыта для любых советов / мнений.Я новичок в этой технологии.Спасибо!

1 Ответ

0 голосов
/ 23 декабря 2018

Кажется, что вы непосредственно вводите текстовые данные в модель логистической регрессии.Возможно, вы использовали промежуточный счетчик / TfidfVectorizer во время тренировки.Используйте тот же векторизатор, чтобы сделать transform().Затем введите преобразованные текстовые данные в модель логистической регрессии.

См. Мое предложение в строке прогнозирования.

РЕДАКТИРОВАТЬ:

from sklearn.linear_model import LogisticRegression 
lr_clf.fit(train_x,train_y) 
server = "{W10HSVQXX1}"
db = "{test}" 
con = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + db) 
query = "select Message from [dbo].[followup] where prediction ='Un-Known'" 
df_test = pd.read_sql(query, con) 
df_test.head() 
len(count_vec.get_feature_names()) 

res=lr_clf.predict(count_vec.transform(df_test))
print(res) 
...