from KNN.modelSplit import train_test_split from LinearRegression.multLinearRegression import MultLinearRegression from LinearRegression.multLinearRegressionS import MultLinearRegressionS from sklearn.preprocessing import StandardScaler """梯度下降法的向量化测试""" if __name__ == "__main__": boston = datasets.load_boston() X = boston.data y = boston.target X = X[y < 50.0] y = y[y < 50.0] X_train, X_test, y_train, y_test = train_test_split(X, y, seed=666) lin_reg1 = MultLinearRegression() lin_reg1.fit_normal(X_train, y_train) print("MultLinearRegression's Predict Score : {}".format(lin_reg1.score(X_test, y_test))) # 报错nan, 如果使用默认eta lin_reg2 = MultLinearRegressionS() lin_reg2.fit_gd(X_train, y_train, eta=0.000001, n_iters=1e6) # score很低,最好在使用梯度下降法前进行数据归一化 print("MultLinearRegression's Predict Score : {}".format(lin_reg2.score(X_test, y_test))) # 进行数值归一化 standardScaler = StandardScaler() standardScaler.fit(X_train) X_train_standard = standardScaler.transform(X_train) # 归一化处理
import numpy as np import matplotlib.pyplot as plt from math import sqrt from sklearn import datasets from ModelTest.metrics import * from KNN.modelSplit import train_test_split from LinearRegression.simpleLinearRegressionS import SimpleLinearRegression2 if __name__ == "__main__": """衡量线性回归算法的标准测试""" boston = datasets.load_boston() x = boston.data[:, 5] # 只使用房间数量这个特征 y = boston.target x = x[y < 50.0] y = y[y < 50.0] x_train, x_test, y_train, y_test = train_test_split(x, y, seed=666) reg = SimpleLinearRegression2() reg.fit(x_train, y_train) y_predict = reg.predict(x_test) print("MSE : {}".format(mean_squared_error(y_test, y_predict))) print("RMSE : {}".format(root_mean_squared_error(y_test, y_predict))) print("MAE : {}".format(mean_absolute_error(y_test, y_predict))) print("R Squared : {}".format(r2_score(y_test, y_predict)))
from KNN.modelSplit import train_test_split from KNN.kNN import kNNClassifier from sklearn import datasets from ModelTest.metrics import accuracy_score """自定义KNN算法测试""" iris = datasets.load_iris() # 导入鸢尾花数据集 X = iris.data y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y) # 对数据集进行拆分,训练数据集,测试数据集 my_knn_clf = kNNClassifier(k=3) my_knn_clf.fit(X_train, y_train) y_predict = my_knn_clf.predict(X_test) # 返回预测结果集 print("预测准确率为:{}".format(accuracy_score(y_test, y_predict)))
import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn import datasets from KNN.modelSplit import train_test_split from KNN.kNN import kNNClassifier from ModelTest.metrics import accuracy_score digits = datasets.load_digits() X = digits.data y = digits.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_ratio=0.2) # 还原特征变为图像 # some_digit = X[666] # print(y[666]) # some_digit_image = some_digit.reshape(8, 8) # plt.imshow(some_digit_image, cmap = matplotlib.cm.binary) # plt.show() my_knn_clf = kNNClassifier(k=3) my_knn_clf.fit(X_train, y_train) """只关心准确率,不关心预测结果""" print("自定义kNN模型预测准确率为:{}".format(my_knn_clf.score(X_test, y_test))) """使用自定义KNN模型测试手写数字准确度""" y_predict = my_knn_clf.predict(X_test) print("自定义kNN模型预测准确率为:{}".format(accuracy_score(y_test, y_predict)))