首页 > 解决方案 > 模型作品接受支持向量机 SVM 和线性判别分析

问题描述

我正在使用 PYCharm 环境 python 3.7.4 我已经导入了 CSV 文件来训练模型并预测输出。我有不同的算法如下:

1-高斯 2-逻辑回归 3-KNN 4-决策树 5-SVM 6-线性判别

预测模型工作正常,但支持向量机 SVM 和线性判别分析显示错误(如下所示)。当我在 Jupiter Anaconda 环境中运行它们时,它们运行良好。

图为不同的算法和输出

在此处输入图像描述

图书馆:

import os
import csv
import pandas as pd
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QInputDialog, QLineEdit, QFileDialog
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5 import QtCore, QtGui, QtWidgets
from sklearn import model_selection
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.preprocessing import LabelEncoder

from sklearn import tree
from sklearn.metrics import accuracy_score
from PIL import Image
import numpy as np
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sb
import warnings

数据类型:int

数据形状:

X.shape (637, 5)
Y.shape (637,)

支持向量机 SVM 错误:

_________________________________错误__________________________________ 回溯(最近一次调用最后一次):,第 1320 行,在 pushButton_8_handler ax1 = sns.distplot(Y_predict)

_________________________________CODE__________________________________ def plot_distribution(inp): plt.figure() ax = sns.distplot(inp) plt.axvline(np.mean(inp), color="k", linestyle="dashed", linewidth=5) , max = plt.ylim() plt.text( inp.mean() + inp.mean() / 10, max_ - max_ / 10, "Mean: {:.2f}".format(inp.mean()), ) 返回plt.figure 打印(np.mean(Y_test))打印(np.mean(Y_predict))

    #________________________Dist Predict Vs. Test and Means value_________________________
            plt.figure(figsize=(9,5))
            o=np.mean(Y_test)
            tt=np.mean(Y_train)
            ax1 = sns.distplot(Y_predict)
            ax2 = sns.distplot(Y_test)
            RR1=('Mean:', tt)
            RR2=('Mean:', o)
            plt.axvline(np.mean(Y_predict), color='b', linestyle='dashed', linewidth=5,label=RR1)
            plt.axvline(np.mean(Y_test), color='orange', linestyle='dashed', linewidth=5,label=RR2)
            plt.legend()
            plt.savefig('SVM.png')

线性判别分析误差:

_______________________ERROR__________________________________    
        AttributeError: 'float' object has no attribute 'sqrt'

        The above exception was the direct cause of the following exception:

        Traceback (most recent call last): , line 829, in pushButton_4_handler
            Classifier.fit(X_train, Y_train)

_______________________CODE__________________________________

        #____________LinearDiscriminantAnalysis____________________

            def pushButton_4_handler(self):
                from PIL import Image

                f = ('Test.csv')
                data = pd.read_csv(f)
                data = data.dropna()
                X = data.drop('DrainStatnumout', axis='columns')
                Y = data['DrainStatnumout']
                data.Failuer = data.Failuer.astype(int)
                print(data)

                X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.20)
                Classifier = LinearDiscriminantAnalysis()
                Classifier.fit(X_train, Y_train)
                Y_predict = Classifier.predict(X_test)

标签: python

解决方案


您应该改进您的问题,以便我们为您提供帮助,添加更多错误信息、您正在使用的库、数据的形状和类型......


推荐阅读