import pandas as pd import pymysql # 中文问题 from matplotlib.font_manager import FontProperties # 深度学习模块sklearn from sklearn.linear_model import LinearRegression # train_test_split是sklearn用于划分数据集的,即将原始数据集划分成测试集和训练集两部分的函数。 from sklearn.model_selection import train_test_split # 设计字体 font = FontProperties(size=10) # 加载数据集 # data = pd.read_sql('select * from data05', con=db_pymysql) while True: db_pymysql = pymysql.connect(host='localhost', port=3306, user='root', password='12345678', db='movie',use_unicode=True, charset='utf8') data = pd.read_sql('select * from data05', con=db_pymysql) sql = "select * from data" mycursor = db_pymysql.cursor() mycursor.execute(sql) mydata = mycursor.fetchone() if mydata !=None: # 导演能力,编剧能力,演员能力,电影评分,票房 data1 = data[['directorCapacity', 'screenwriterCapacity', 'starringCapacity', 'movie_rating', 'boxOffice']] data2 = data[['directorCapacity', 'screenwriterCapacity', 'starringCapacity', 'boxOffice']] x = data[['directorCapacity', 'screenwriterCapacity', 'starringCapacity']] y = data[['movie_rating']] y1 = data[['boxOffice']] # train_size;测试集大小,random-state:随机数种子(该组随机数的编号,再需要重复试验的时候,保证得到一组一样的随机数),主要是为了复现结果而设置的。 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0) x_train1, x_test1, y_train1, y_test1 = train_test_split(x, y1, test_size=0.2, random_state=0) # 评分线性模型 # 导入线性模型,模型的参数默认 model = LinearRegression() # 训练模型 model.fit(x_train, y_train) # 票房预测模型 ##导入线性模型,模型的参数默认 model1 = LinearRegression() # 训练模型 model1.fit(x_train1, y_train1) # 《爱情公寓》评分预测 directorCapacity =6.266667 starring = 6 screen = 6.8 X = [[directorCapacity, starring, screen]] # 打印评分线性模型的准确率accuracy print("评分预测模型准确率:") accuracy = model.score(x_test, y_test) print(accuracy) print("电影所获电影评分预测:") score = model.predict(X)[0][0] print(score) # 打印票房线性模型的准确率accuracy print("票房预测模型准确率:") office_accuracy = model1.score(x_test1, y_test1) print(office_accuracy) print("电影所获电影票房预测:") Boxoffice = model1.predict(X)[0][0] print(Boxoffice) # 最佳阵容导演、编剧、演员能力值参数 director = float(mydata[1]) actor = float(mydata[2]) enditor = float(mydata[3]) X1 = [[director, actor, enditor]] print("最佳阵容参演电影所获电影评分预测:") bestteamscore = model.predict(X1)[0][0] print(bestteamscore) print("最佳阵容参演电影所获电影票房预测:") bestteamBoxoffice = model1.predict(X1)[0][0] print(bestteamBoxoffice) data = (accuracy, score, office_accuracy, Boxoffice, bestteamscore, bestteamBoxoffice) mysql = "insert into result(scoreaccuracy,Scorepredicts,fficeaccuracy,boxoffice,bestteamscore,bestteamboxoffice) values(%s,%s,%s,%s,%s,%s)" mycursor.execute(mysql, data) db_pymysql.commit() print("成功") break