【问题标题】:ValueError: could not convert string to float:While loading data from sql server to Predict()ValueError: could not convert string to float: While loading data from sql server to Predict()
【发布时间】:2019-05-22 23:02:13
【问题描述】:

我正在使用 SKLEARN 和 Pandas 加载数据集以进行预测。在训练数据上它就像一个魅力,问题来了。 我将数据框传递给预测函数(我直接从 SQL 服务器加载此数据)。 错误:

ValueError: could not convert string to float: 'MESSAGE: Send me an 电子邮件。\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,'%')

注意:模型已经过训练和拟合。

接受任何建议/意见。我是这项技术的新手。 谢谢!

【问题讨论】:

  • 哪一行给你这个错误?
  • @Mohit : res=lr_clf.predict(df_test) 行给了我错误。

标签: python pandas machine-learning scikit-learn linear-regression


【解决方案1】:

您似乎直接将文本数据输入逻辑回归模型。可能你在训练期间使用了 CountVectorizer / 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) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-18
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2021-11-26
    • 2021-11-19
    相关资源
    最近更新 更多