資源簡介
本代碼用于二維數據不能采用簡單線性劃分去做劃分的情況,采用python,支持向量機方式實現,對數據進行二分類,并自動繪制出三維立體圖像。內含數據集txt格式,可直接運行。

代碼片段和文件信息
from?numpy?import?*
import?matplotlib.pyplot?as?plt
from?matplotlib?import?cm
import?mpl_toolkits.mplot3d
from?sklearn?import?svm
from?sklearn.model_selection?import?train_test_split
#?加載數據集
def?loadDataSet(filename):
????dataMat?=?[];?labelMat?=?[]
????fr?=?open(filename)
????for?line?in?fr.readlines():
????????lineArr?=?line.strip().split(‘\t‘)
????????dataMat.append([float(lineArr[0])?float(lineArr[1])])
????????labelMat.append(float(lineArr[2]))
????return?array(dataMat)?array(labelMat)
if?__name__?==?“__main__“:
????data?target?=?loadDataSet(“testSetRBF2.txt“)
????c_data?=?[]
????for?item?in?data:
????????c_data.append([item[0]?**?2?item[0]?*?item[1]?item[1]?**?2])
????c_data?=?array(c_data)
????index1?=?where(target?==?1)
????X1?=?c_data[index1]
????index2?=?where(target?==?-1)
????X2?=?c_data[index2]
????cls?=?svm.LinearSVC()
????cls.fit(c_data?target)
????print(‘Coefficients:%s?intercept?%s‘?%?(cls.coef_?cls.intercept_))
????w?=?cls.coef_[0]
????d?=?cls.intercept_[0]
????#?w[0]?*?x?+?w[1]?*?y?+?w[2]?*?z?+?d?=?0?----?z?=
????#?轉換為三維空間
????ax?=?plt.figure().add_subplot(111?projection=‘3d‘)
????ax.scatter(X1[:?0]?X1[:?1]?X1[:?2]?c=‘r‘?marker=‘o‘)
????ax.scatter(X2[:?0]?X2[:?1]?X2[:?2]?c=‘b‘?marker=‘x‘)
????X?=?arange(0?0.4?0.1)
????Y?=?arange(-0.4?0.4?0.1)
????X?Y?=?meshgrid(X?Y)
????Z?=?(-d?-?w[0]?*?X?-?w[1]?*?Y)?/?w[2]
????ax.plot_surface(X?Y?Z?rstride=1?cstride=1
????????????????????cmap=cm.jet?linewidth=0?antialiased=False)
????plt.show()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2151??2018-05-28?18:30??testSetRBF2.txt
?????文件????????1592??2018-05-28?20:41??testSetRBF2_Axes3D.py
- 上一篇:基于python圖書管理系統
- 下一篇:基于python爬取驗證碼并識別
評論
共有 條評論