diff --git a/function.py b/function.py index 9bd062a..2b26b17 100644 --- a/function.py +++ b/function.py @@ -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