构建一个逻辑回归模型。

任务

给定一个特征矩阵和一个要预测的单个数据点。您的任务是使用特征矩阵构建逻辑回归模型,并对单个数据点进行预测( 1 或 0 )。

You are given a feature matrix and a single datapoint to predict. Your job will be to build a Logistic Regression model with the feature matrix and make a prediction (1 or 0) of the single datapoint.

输入格式

  • 第一行:特征矩阵中的数据点数量(n)
  • 接下来的 n 行:特征矩阵中行的值,以空格分隔
  • 接下来一行:目标值,以空格分隔
  • 最后一行:单个数据点的值(以空格分隔),没有目标值

  • First line: Number of data points in the feature matrix (n)

  • Next n lines: Values of the row in the feature matrix, separated by spaces
  • Next line: Target values separated by spaces
  • Final line: Values (separated by spaces) of a single datapoint without a target value

输出格式

要么是 1 要么是 0

输入样例

6
1 3
3 5
5 7
3 1
5 3
7 5
1 1 1 0 0 0
2 4

输出样例

1

解释

我们可以看到上图中绘制的点和分隔数据的线。点(2, 4)在图上标出,你可以看到它在线的正侧,因此结果是1。

起手式

n = int(input())
X = []
for i in range(n):
X.append([float(x) for x in input().split()])
y = [int(x) for x in input().split()]
datapoint = [float(x) for x in input().split()]

解题

第一步

我们根据起手式,将注释写上,容易看一些

# 第一行:特征矩阵中的数据点数量(n)
n = int(input())
# 接下来的 n 行:特征矩阵中行的值,以空格分隔
X = []
for i in range(n):
X.append([float(x) for x in input().split()])
# 接下来一行:目标值,以空格分隔
y = [int(x) for x in input().split()]
# 最后一行:单个数据点的值(以空格分隔),没有目标值
datapoint = [float(x) for x in input().split()]

第二步

分析并给出思路

  1. 引用 scikit-learn 包中的 LogisticRegression 类
  2. 实例化 LogisticRegression 类
  3. 构建模型
  4. 输出结果

第三步

# 导入机器学习的包
from sklearn.linear_model import LogisticRegression

# 实例化 LogisticRegression 类
model = LogisticRegression()

# 第一行:特征矩阵中的数据点数量(n)
n = int(input())
# 接下来的 n 行:特征矩阵中行的值,以空格分隔
X = []
for i in range(n):
X.append([float(x) for x in input().split()])
# 接下来一行:目标值,以空格分隔
y = [int(x) for x in input().split()]
# 最后一行:单个数据点的值(以空格分隔),没有目标值
datapoint = [float(x) for x in input().split()]

# 构建模型
model.fit(X, y)

# 输出预测结果
print(model.predict([datapoint])[0])

代码解释:

主要是 model.predict() 函数返回值是数组,由于我们只预测一组数据点(datapoint),所以需要用下标 0 来获取第一个元素