generated from LufsX/Experiment-LogReg
This commit is contained in:
+34
@@ -105,6 +105,30 @@ def accuracy(X, y, weights):
|
|||||||
predictions = predict_logreg(X, weights)
|
predictions = predict_logreg(X, weights)
|
||||||
return np.mean(predictions == y)
|
return np.mean(predictions == y)
|
||||||
|
|
||||||
|
def loadDataSet(filename='dataSet.txt'):
|
||||||
|
dataList = []
|
||||||
|
labelList = []
|
||||||
|
fr = open(filename)
|
||||||
|
for line in fr.readlines():
|
||||||
|
lineList = line.strip().split()
|
||||||
|
# 修改前
|
||||||
|
dataList.append([1.0, float(lineList[0]), float(lineList[1])])
|
||||||
|
# 修改后
|
||||||
|
# dataList.append([float(lineList[0]), float(lineList[1])])
|
||||||
|
labelList.append(int(lineList[2]))
|
||||||
|
return dataList, labelList
|
||||||
|
|
||||||
|
# 假设这里有一个简单的线性回归模型训练和评估的函数
|
||||||
|
def trainAndEvaluate(dataList, labelList):
|
||||||
|
# 这里只是一个简单的示例,实际中可能需要使用更复杂的模型和评估方法
|
||||||
|
import numpy as np
|
||||||
|
X = np.array(dataList)
|
||||||
|
y = np.array(labelList)
|
||||||
|
w = np.linalg.inv(X.T @ X) @ X.T @ y
|
||||||
|
predictions = X @ w
|
||||||
|
error = np.mean((predictions - y)**2)
|
||||||
|
return error
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
X_train, y_train = load_data("./horse-colic.data")
|
X_train, y_train = load_data("./horse-colic.data")
|
||||||
X_test, y_test = load_data("./horse-colic.test")
|
X_test, y_test = load_data("./horse-colic.test")
|
||||||
@@ -121,3 +145,13 @@ if __name__ == "__main__":
|
|||||||
final_accuracy = accuracy(X_test, y_test, final_weights)
|
final_accuracy = accuracy(X_test, y_test, final_weights)
|
||||||
print(f"最终测试集的准确率: {final_accuracy:.4f}")
|
print(f"最终测试集的准确率: {final_accuracy:.4f}")
|
||||||
|
|
||||||
|
# 读取原始数据
|
||||||
|
dataList1, labelList1 = loadDataSet()
|
||||||
|
error1 = trainAndEvaluate(dataList1, labelList1)
|
||||||
|
|
||||||
|
# 修改代码后读取数据
|
||||||
|
dataList2, labelList2 = loadDataSet()
|
||||||
|
error2 = trainAndEvaluate(dataList2, labelList2)
|
||||||
|
|
||||||
|
print(f"有常数项时的误差:{error1}")
|
||||||
|
print(f"无常数项时的误差:{error2}")
|
||||||
Reference in New Issue
Block a user