sklearn框架使用例子,多种分类方法的集合,方便模型的融合

  1 import numpy as np
  2 import pandas as pd
  3 from pandas import Series,DataFrame
  4 import matplotlib.pyplot as plt
  5 from sklearn.svm import NuSVC
  6 import xgboost as xgb
  7 from xgboost import plot_importance
  8 #模型效果评估
  9 from sklearn.metrics import r2_score
 10 from datetime import datetime
 11 from sklearn.model_selection import train_test_split
 12 from sklearn.preprocessing import StandardScaler
 13 from sklearn.datasets import make_moons, make_circles, make_classification
 14 from sklearn.neural_network import MLPClassifier
 15 from sklearn.neighbors import KNeighborsClassifier
 16 from sklearn.svm import SVC
 17 from sklearn.gaussian_process import GaussianProcessClassifier
 18 from sklearn.gaussian_process.kernels import RBF
 19 from sklearn.tree import DecisionTreeClassifier
 20 from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
 21 from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
 22 
 23 #到多元回归之前是获取数据过程,下面分别采用多种模型对数据进行测试
 24 df = pd.read_excel(r'C:\Users\27058\Desktop\task\program\1.xlsx')
 25 # print(len(df))
 26 heji = list() #所有训练数据
 27 output_1 = list()
 28 output_2 = list()
 29 output_3 = list()
 30 output_4 = list()
 31 output_5 = list()
 32 # 0:84
 33 for i in range(0,72):
 34     # 每组训练数据
 35     input = list()
 36     input.append(df['镍片厚度(mm)'][i])
 37     input.append(df['结果状态'][i])     #是否合格
 38     input.append(df['焊点拉力(N)'][i])
 39     input.append(df['镍带是否撕裂'][i])
 40     heji.append(input)
 41 
 42     output_1.append(df['焊针压力(N)'][i])
 43     output_2.append(df['焊接电压1(V)'][i])
 44     output_3.append(df['焊接电压2(V)'][i])
 45     output_4.append(df['焊接时间1(ms)'][i])
 46     output_5.append(df['焊接时间2(ms)'][i])
 47 
 48 x_train = heji[0:52]
 49 y_train = output_2[0:52]
 50 x_test = np.array(heji[52:])
 51 y_true = output_2[52:]
 52 
 53 standardScaler = StandardScaler()
 54 x_train_fit = standardScaler.fit_transform(x_train)
 55 x_test_fit = standardScaler.transform(x_test)
 56 print("y_true:",y_true)
 57 # logistic回归,用作二分类
 58 from sklearn.linear_model import LogisticRegression
 59 log_reg = LogisticRegression()
 60 log_reg.fit(x_train_fit, y_train)
 61 log_reg_pre = log_reg.predict(x_test_fit)
 62 print('log:',log_reg_pre)
 63 
 64 #sgd分类
 65 from sklearn.linear_model import SGDClassifier
 66 sgd_reg = SGDClassifier()
 67 sgd_reg.fit(x_train_fit,y_train)
 68 sgd_reg_pre = sgd_reg.predict(x_test_fit)
 69 print('sgd:',sgd_reg_pre)
 70 
 71 #朴素贝叶斯
 72 from sklearn.naive_bayes import GaussianNB
 73 gnb = GaussianNB()
 74 gnb_y_pred = gnb.fit(x_train_fit, y_train).predict(x_test_fit)
 75 print('gnb:',gnb_y_pred)
 76 
 77 # #KNN分类
 78 # from sklearn import neighbors
 79 # knn = neighbors.KNeighborsClassifier()
 80 # knn.fit(x_train_fit, y_train)
 81 # knn_pre = knn.predict(x_test_fit)
 82 # print('knn:',knn_pre)
 83 
 84 classifiers = [
 85     KNeighborsClassifier(3),
 86     # SVC(kernel="linear", C=0.025),
 87     SVC(gamma=2, C=1),
 88     GaussianProcessClassifier(1.0 * RBF(1.0), warm_start=True),
 89     DecisionTreeClassifier(max_depth=5),
 90     RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),
 91     MLPClassifier(alpha=1),
 92     AdaBoostClassifier(),
 93     GaussianNB(),
 94     QuadraticDiscriminantAnalysis()]
 95 
 96 names = ["knn",  "RBF_SVM", "g_c",
 97          "Deci", "Rand", "Net", "AdaBoost",
 98          "Bayes", "QDA"]
 99 for name, clf in zip(names, classifiers):
100     pre = clf.fit(x_train_fit, y_train).predict(x_test_fit)
101     print(name,pre)

 

posted @ 2020-02-19 11:14  you-wh  阅读(728)  评论(0编辑  收藏  举报
Fork me on GitHub