generated from LufsX/Experiment-LogReg
This commit is contained in:
+5
-5
@@ -88,14 +88,14 @@ def train_logreg(X, y, learning_rate=0.0001, iterations=5000, batch_size=32, lam
|
||||
|
||||
return weights, selector
|
||||
|
||||
def predict_logreg(inX, weights, selector, degree=2):
|
||||
def predict_logreg(inX, weights, selector=None, degree=2):
|
||||
"""
|
||||
对率回归预测函数。
|
||||
|
||||
Args:
|
||||
- inX (numpy array): 输入待分类的样本。
|
||||
- weights (numpy array): 训练得到的权重。
|
||||
- selector: 特征选择器,用于筛选特征。
|
||||
- selector (optional): 特征选择器,用于筛选特征。
|
||||
- degree (int): 多项式特征的次数。
|
||||
|
||||
Returns:
|
||||
@@ -103,7 +103,8 @@ def predict_logreg(inX, weights, selector, degree=2):
|
||||
"""
|
||||
inX = standardize(inX.reshape(1, -1)) # 标准化输入
|
||||
inX = add_polynomial_features(inX, degree=degree) # 增加多项式特征
|
||||
inX = selector.transform(inX) # 应用特征选择,确保预测时与训练时使用相同的特征
|
||||
if selector is not None:
|
||||
inX = selector.transform(inX) # 应用特征选择,确保预测时与训练时使用相同的特征
|
||||
probability = sigmoid(np.dot(inX, weights))
|
||||
return 1 if probability >= 0.5 else 0
|
||||
|
||||
@@ -148,5 +149,4 @@ if __name__ == "__main__":
|
||||
weights, selector = train_logreg(X_train, y_train, learning_rate=0.0001, iterations=5000, batch_size=32, lambda_=0.1, degree=2)
|
||||
|
||||
# 测试单个数据
|
||||
y_pred = predict_logreg(X_test[11], weights, selector, degree=2)
|
||||
print(f"预测结果: {y_pred}, 实际结果: {y_test[11]}")
|
||||
y_pred = predict_logreg(X_test[11], weights
|
||||
|
||||
Reference in New Issue
Block a user