我浏览了关于这个主题的所有答案,但我没有找到任何解决我问题的方法。
Python脚本在本地python上是正确的,但是如果从具有ajax函数的html页面调用则不起作用
#!C:\ProgramData\Anaconda2\python.exe
# -*- coding: utf-8 -*-
import MySQLdb
import pandas as pd
import numpy as np
from random import randint
from sklearn.metrics.pairwise import cosine_similarity
from scipy import sparse
import cgitb
cgitb.enable()
db = MySQLdb.connect(host="localhost",
user="",
passwd="",
db="")
cur = db.cursor()
cur.execute("SELECT * FROM rs_users")
users=[]
for row in cur.fetchall():
#print (row[0])
users.append(row[0])
db.close()
AI_Follow=pd.DataFrame(columns=['id_u']+list(map(str,(users))))
AI_Follow.id_u=users
db = MySQLdb.connect(host="",
user="",
passwd="",
db="")
cur = db.cursor()
cur.execute("SELECT * FROM rs_userfollow")
for row in cur.fetchall():
#print (str(row[0])+' '+str(row[1])+' '+str(row[2]))
AI_Follow.iloc[int((row[1]-1)),int(row[2])]=1
#raw_input("Press Enter to continue...")
db.close()
#CALCOLIAMO ORA LA MAGNITUDINE
#il ragionamento che si fa è quello di pesare ogni utente in funzione del numero di follow che fa. Se ne fa troppi
# deve pesare meno rispetto a chi ne fa di meno che significa che è più accorto a quello che fa
data=AI_Follow.drop('id_u',1)
magnitude=np.sqrt(np.square(data.sum(axis=1)))
data_items = data.divide(magnitude, axis='index')
#abbiamo creato la matrice di magnitudine
data_items=data_items.fillna(0) #eliminiamo i Nan e sostituiamo con gli zero
#calcolimao la similarità tra user
similarities = cosine_similarity(data_items.transpose())
sim = pd.DataFrame(data=similarities, index= data_items.columns, columns= data_items.columns)
data_matrix = sim
#------------------------------------------------------------------
db = MySQLdb.connect(host="",
user="",
passwd="",
db="")
cur = db.cursor()
query=('DELETE from rs_recom')
cur.execute(query)
db.commit()
for user in AI_Follow.id_u:
#user = 1 # L'id dell'utente per il quale vogliamo generare la raccomandazione
## qui è da iniziare il ciclo for per creare la tabella di tutti gli utenti con i relativi preferred
user_index = AI_Follow[AI_Follow.id_u == user].index.tolist()[0] # ottiene l'indice dell'utente
# Prendiamo le persone che l'utente ha seguito.
known_user_likes = data_items.iloc[user_index]
known_user_likes = known_user_likes[known_user_likes >0].index.values
# creiamo un vettore con i following normalizzati (o rating)
user_rating_vector = data_items.iloc[user_index]
# Calcoliamo lo Score
score = data_matrix.dot(user_rating_vector).div(data_matrix.sum(axis=1))
# Rimuoviamo i like conosciuti dalla recommendation.
score = score.drop(known_user_likes)
suggested_user=score.nlargest(10)
for item in range(len(suggested_user)):
query=('insert into rs_recom (id_user, id_recom) values ("%s", "%s")' % (user, suggested_user.index[item]))
cur.execute(query)
db.commit()
db.close()
当我点击php页面上的Run按钮时,服务器会给我这个错误:
End of script output before headers:
但我无法找到问题所在。
谢谢
答案 0 :(得分:0)
如果您将其作为CGI运行,则首先需要将其发送回浏览器的是Content-type
标头。如果您在此之前发送任何内容,则会导致此错误。
尝试在输出任何其他内容之前将其添加到文件顶部附近:
print("Content-type: text/html\n")
编辑:添加了\ n