PSO优化支持向量机参数的Python代码

2024-06-28 19:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在支持向量机(SVM)上实现粒子群优化,以优化成本和伽马参数(径向基函数),以改善准确度支持向量机程序正在从mysql数据库中获取数据,并且正在运行好吧。现在我需要一个PSO代码来优化成本和gamma参数,并在支持向量机程序中使用。 下面是svm和pso代码。支持向量机工作良好,但粒子群优化代码不工作。 代码是用python编写的。 请帮忙。。在

支持向量机代码:

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代码:

^{pr2}$

我想用RMSE作为适应度函数,但我认为适应度函数必须包含要优化的参数。但是,在SVR中,目标函数过于复杂,无法用python编写。在


Tags: 函数代码testimportformdbas向量