PSO优化SVM参数的Python代码
我正在尝试在支持向量机(SVM)上实现粒子群优化以优化成本和伽马参数(径向基函数)以提高精度。SVM程序从mysql数据库中获取数据,运行良好。现在我需要一个PSO代码来优化成本和伽马参数,并将其用于SVM程序。 以下是svm和pso代码。Svm工作正常,但PSO代码不工作。 代码是用python编写的。 请帮忙 SVM代码:PSO优化SVM参数的Python代码,python,svm,particle-swarm,Python,Svm,Particle Swarm,我正在尝试在支持向量机(SVM)上实现粒子群优化以优化成本和伽马参数(径向基函数)以提高精度。SVM程序从mysql数据库中获取数据,运行良好。现在我需要一个PSO代码来优化成本和伽马参数,并将其用于SVM程序。 以下是svm和pso代码。Svm工作正常,但PSO代码不工作。 代码是用python编写的。 请帮忙 SVM代码: import MySQLdb import cgi import cgitb import pandas as pd import numpy as np from
import MySQLdb
import cgi
import cgitb
import pandas as pd
import numpy as np
from sklearn.cross_validation import train_test_split
from sklearn import preprocessing, cross_validation, svm
from sklearn.svm import SVR
import mysql.connector as sql
import pandas as pd
cgitb.enable()
print 'Content-type: text/html\r\n\r'
form = cgi.FieldStorage()
e1= form.getvalue('EARNING_PER_SHARE', '')
e2 = form.getvalue('CASH_INVESTMENT', '')
e3 = form.getvalue('CURRENT_LIABILITY', '')
e4 = form.getvalue('TOTAL_REVENUE', '')
e5 = form.getvalue('GROSS_PROFIT', '')
db = MySQLdb.connect(host="127.0.0.1", db="cisco", user="root", passwd="")
cursor = db.cursor()
cursor.execute("""
INSERT INTO table1 (EARNING_PER_SHARE, CASH_INVESTMENT, CURRENT_LIABILITY,
TOTAL_REVENUE,GROSS_PROFIT)
VALUES (%s, %s, %s, %s, %s)
""", (e1, e2, e3, e4,e5))
db.commit()
db.close()
db_connection = sql.connect(host='127.0.0.1', database='cisco', user='root',
password='')
db_cursor = db_connection.cursor()
db_cursor.execute('SELECT * FROM table1')
table_rows = db_cursor.fetchall()
df = pd.DataFrame(table_rows)
np = df.as_matrix()
X = df.drop([4], 1)
np1 = X.as_matrix()
y = df[4]
np2 = y.as_matrix()
x_train, x_test, y_train, y_test = train_test_split(np1, np2, test_size=0.3)
clf = svm.SVR()
clf.fit(np1, np2)
confidence = clf.score(np1, np2)
for k in ['rbf']:
clf = svm.SVR(kernel=k, C=100, gamma=0.0001)
clf.fit(np1, np2)
confidence = clf.score(np1, np2)
print(k,confidence)
a = clf.predict(np1)
print ('\npredicted values')
print (a)
print ('\nreal values')
print (np2)
PSO代码:
def fitness_function(a,x,np2,np1,C,gamma,):
C = x[0]
gamma = x[1]
clf = svm.SVR(kernel=k, C=10, gamma=0.0001,swarmsize=50)
clf.fit(np1, np2)
confidence = clf.score(np1, np2)
print(k,confidence)
mse = sqrt(mean_squared_error(np2, a))
return mse
lb = [10, 0.0001]
ub = [1000,0.1]
xopt, fopt = pso(fitness_function, lb, ub)
我想使用RMSE作为适应度函数,但我认为适应度函数必须包括要优化的参数。但是,在SVR中,目标函数太复杂,无法用python编写。什么具体不起作用?PSO代码不起作用。我想使用RMSE作为适应度函数,并获得成本和伽马的优化值。5倍交叉验证也可用于估计给定参数集的RMSE。什么具体不起作用?PSO代码不起作用。我想使用RMSE作为适应度函数,并获得成本的优化值,gamma.5倍交叉验证也可用于估计给定参数集的RMSE。