关于200个不同年龄(age,定量变量)和性别(sex,定性变量,0和1分别代表女和男)的人对某项服务产品的观点(opinion,二水平定性变量,用1和0代表认可和不认可)的数据,将观点作为因变量,建立logistic模型加以分析,并预测一个年龄是30岁的女人对该项服务产品认可的可能性。
时间: 2024-03-07 17:53:16 浏览: 206
好的,下面是具体的代码实现:
```python
import pandas as pd
from sklearn.linear_model import LogisticRegression
# 读取数据
df = pd.read_csv('ex.csv')
# 将数据划分为自变量和因变量
X = df[['age', 'sex']]
y = df['opinion']
# 将性别转换为哑变量
X = pd.get_dummies(X, columns=['sex'])
# 建立logistic模型
clf = LogisticRegression()
clf.fit(X, y)
# 预测一个年龄为30岁,性别为女的人对该项服务产品认可的可能性
new_data = pd.DataFrame({'age': [30], 'sex': [0]})
new_data = pd.get_dummies(new_data, columns=['sex'])
pred = clf.predict_proba(new_data)[:, 1]
print("预测结果:", pred[0])
```
解释一下上面的代码:
首先,我们使用 pandas 读取数据文件 ex.csv,并将数据划分为自变量 X 和因变量 y。
接着,我们使用 pandas 中的 get_dummies 函数将性别转换为哑变量。
然后,我们使用 sklearn 的 LogisticRegression 建立 logistic 回归模型。
最后,我们使用建立好的模型对一个年龄为30岁,性别为女的人进行预测,并输出预测结果。
需要注意的是,上面的代码中预测结果 pred 是一个概率值,表示该人对该项服务产品认可的概率。如果需要将概率值转换为分类结果(认可或不认可),可以根据设定的阈值进行转换。通常来说,当概率值大于 0.5 时,我们将样本分为正类;否则,分为负类。
阅读全文