我想从机器学习模型中获取输入数据,然后进行预测以插入sql数据库。我还想避免保存已经保存的输入和预测数据。
`for i in range(5):
if models.predict([data["Complaint1"][i]])=="STUDENTS":
new_data=pd.concat([
pd.DataFrame(vectoriserst.transform([data['Complaint1'][i]]).toarray(), columns=vectoriserst.get_feature_names()),
pd.DataFrame(vectoriserst.transform([data['complaint2'][i]]).toarray(), columns=vectoriserst.get_feature_names())
], axis=1
)
Predictions=modelst.predict(new_data)
else :
new_data=pd.concat([
pd.DataFrame(vectoriserfc.transform([data['Complaint1'][i]]).toarray(), columns=vectoriserfc.get_feature_names()),
pd.DataFrame(vectoriserfc.transform([data['complaint2'][i]]).toarray(), columns=vectoriserfc.get_feature_names())
], axis=1
)
Predictions=modelfc.predict(new_data)
conn=sqlite3.connect("mydata.db")
cur=conn.cursor()
cur.execute(
"""
CREATE TABLE Table ( id integer PRIMARY KEY,
FolderNumber TEXT,
Complaint1 TEXT,
Complaint2 TEXT,
Prediction)
"""
)
cur.execute("INSERT OR IGNORE INTO Table (FolderNumber, Complaint1, Complaint2, Prediction ) VALUES('%s', '%s', '%s', '%s')" %(data['FolderNumber'][i], data['Complaint1'][i], data['Complaint2'][i], Prediction))
conn.commit()
conn.close()
'
1条答案
按热度按时间hjqgdpho1#
IGNORE将仅忽略UNIQUE/PRIMARY KEY/CHECK/NOT NULL冲突的约束冲突。
在您创建的表中,唯一具有此类约束条件的列是ID列。由于您没有提供值,因此由于它是rowid的别名,因此将生成值(1,然后可能是2,然后可能是3....)而不是空值,并且该值将是唯一值。
因此,您永远不会遇到冲突,因此不会忽略任何插入。
我还希望避免保存已经保存的输入和预测数据。
如果“已保存的输入”可以由单个列确定,则很可能需要UNIQUE约束。如果“已保存的输入”等于多个列,则需要将这些列设为PRIMARY KEY,或者对这些列使用UNIQUE INDEX。
基于代码中的SQL,也许可以考虑下面的例子,它由三个示例组成。
第一个示例基于您的表定义,并允许插入复制的数据,如前所述。
第二个示例清空表,然后添加UNIQUE索引。这次只插入1行,忽略其他行。
第三个示例在删除表后创建表,并将UNIQUE约束添加到预测列。
SQL为:-
SQLite工具(Navicate for SQLite)的输出为:-
即,受影响的行(插入行)对于后两个示例是1,而对于第一个示例是3。