【发布时间】: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