用AI预测相亲成功率:机器学习实战教程
创作时间:
作者:
@小白创作中心
用AI预测相亲成功率:机器学习实战教程
引用
CSDN
1.
https://blog.csdn.net/li060708/article/details/145914597
在当今社会,相亲已成为许多人寻找伴侣的重要途径。那么,有没有可能通过人工智能来预测相亲的成功率呢?本文将通过一个实际案例,使用Python机器学习算法(随机森林)来预测相亲成功率。
相亲成功率数据分析
根据相关数据显示,2025年我国单身男女总人数已突破2.4亿。在所有单身男女中,通过相亲结识并步入婚姻的人群比例约占30%,而通过自由恋爱进入婚姻的比例则达到50%,剩余的20%则选择保持单身或暂时不考虑婚姻。
另外有数据显示:2025年已有超过40%的相亲用户使用了类似DeepSeek的人工智能工具,其中,使用这些工具成功脱单的比例高达65%,显著高于传统相亲方式的成功率(约为35%)。
接下来,我们将通过一个实际例子,展示如何使用人工智能机器学习算法来预测相亲成功率。
一、数据采集
首先,我们需要准备一份相亲成功率的数据。数据集包含以下特征:
house
:是否有房(0/1)car
:是否有车(0/1)appearance
:长相(1-10)family_status
:家庭情况(1-10)parents_status
:父母情况(1-10)lifestyle
:生活习惯(1-10)education
:教育程度(1-6)personality
:性格(1-10)interests
:兴趣(1-10)
最终得到的结果是成功为1,失败为0。
二、建立模型
接下来,我们将使用随机森林算法来训练模型。以下是具体的代码实现:
1. 加载数据
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 数据预处理
data.fillna(data.mean(), inplace=True)
2. 划分训练集和测试集
from sklearn.model_selection import train_test_split
# 划分训练数据和测试数据
x = data.drop('success', axis=1)
y = data['success']
# 开始划分
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
3. 训练模型
from sklearn.ensemble import RandomForestClassifier
# 使用随机森林训练
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(x_train, y_train)
4. 测试模型
from sklearn.metrics import accuracy_score, classification_report
# 使用测试数据进行预测
y_pred = rf.predict(x_test)
# 将预测的数据进行对比,得到准确率
y_res = accuracy_score(y_test, y_pred)
print('准确率为:', y_res)
y_rep = classification_report(y_test, y_pred)
print('详细报告\n', y_rep)
5. 预测结果
# 使用自身实际数据进行预测
my_data = pd.DataFrame({
'house': [0], # 是否有房0无,1有
'car': [0], # 是否有车0无,1有
'appearance': [8], # 颜值,1-10分
'family_status': [2], # 家庭情况1-10分
'parents_status': [2], # 父母情况1-10分
'lifestyle': [2], # 生活习惯1-10分
'education': [4], # 教育情况1-6 ,1 小学 6 博士
'personality': [6], # 性格 1-10
'interests': [2] # 兴趣 1-10
})
print('=====================预测结果=========================')
# 预测结果
result = rf.predict(my_data)
if result[0] == 1:
print('恭喜,牵手成功')
else:
print('下次再遇见更好的')
三、制作相亲预测界面
为了方便不熟悉写代码的朋友进行预测,我们可以使用Qt5制作一个相亲预测的界面。以下是具体的代码实现:
import sys
from PySide6.QtCore import QSize
from PySide6.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QPushButton, QGridLayout, QMessageBox)
from PySide6.QtGui import QMovie
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
class PredictionUI(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建网格布局
grid = QGridLayout()
self.setLayout(grid)
# 创建标签和输入框
self.inputs = {}
features = [
('house', '是否有房(0/1)'),
('car', '是否有车(0/1)'),
('appearance', '长相(1-10)'),
('family_status', '家庭情况(1-10)'),
('parents_status', '父母情况(1-10)'),
('lifestyle', '生活习惯(1-10)'),
('education', '教育程度(1-6)'),
('personality', '性格(1-10)'),
('interests', '兴趣(1-10)')
]
# 添加标签和输入框到网格布局
for i, (key, label_text) in enumerate(features):
label = QLabel(label_text)
input_field = QLineEdit()
self.inputs[key] = input_field
grid.addWidget(label, i, 0)
grid.addWidget(input_field, i, 1)
# 添加预测按钮
predict_btn = QPushButton('进行预测', self)
predict_btn.clicked.connect(self.predict)
grid.addWidget(predict_btn, len(features), 0, 1, 2)
# 添加结果标签
self.result_label = QLabel('')
grid.addWidget(self.result_label, len(features) + 1, 0, 1, 2)
# 设置窗口
self.setGeometry(300, 300, 400, 700)
self.setWindowTitle('婚恋匹配预测系统')
self.show()
def predict(self):
try:
# 创建特征名称的中文对照表
feature_names = {
'house': '是否有房',
'car': '是否有车',
'appearance': '长相',
'family_status': '家庭情况',
'parents_status': '父母情况',
'lifestyle': '生活习惯',
'education': '教育程度',
'personality': '性格',
'interests': '兴趣'
}
for feature, input_field in self.inputs.items():
value = input_field.text().strip()
if not value:
QMessageBox.warning(self, '警告', f'{feature_names[feature]} 不能为空!')
return
try:
float(value)
except ValueError:
QMessageBox.warning(self, '警告', f'{feature_names[feature]} 必须是数字!')
return
QMessageBox.information(self, '提示', '开始预测')
# 获取输入值
input_data = {}
for key, input_field in self.inputs.items():
value = float(input_field.text())
input_data[key] = [value] # 创建单值列表
# 创建DataFrame
df = pd.DataFrame(input_data)
# 调用训练好的模型
pre = xiangqinPredict(df)
if pre:
prediction = "匹配成功"
movie = QMovie("./img/heart.gif") # 确保gif文件在正确的路径下
else:
prediction = "匹配失败"
movie = QMovie("./img/fail.gif") # 确保gif文件在正确的路径下
print(prediction)
# 设置gif大小(可选)
movie.setScaledSize(QSize(400, 400)) # 设置gif显示大小为100x100像素
# 在标签中显示gif
self.result_label.setMovie(movie)
movie.start() # 开始播放gif
except ValueError:
QMessageBox.warning(self, '错误', '请确保所有输入都是有效的数字!')
except Exception as e:
QMessageBox.warning(self, '错误', f'发生错误: {str(e)}')
# 根据数据进行预测
def xiangqinPredict(data):
# 使用pd读取data.csv文件
df = pd.read_csv('data.csv')
# 填充缺失值,使用各列平均值填充空值
df.fillna(df.mean(), inplace=True)
# 删除数据集中的'success'列
x = df.drop('success', axis=1)
y = df['success']
# 将数据集分为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
print(x_train)
# 创建一个随机森林分类器rf
rf = RandomForestClassifier(n_estimators=100, random_state=42)
# 训练
rf.fit(x_train, y_train)
# 使用训练好的模型对测试集(X_test)进行预测
x_pre = rf.predict(x_test)
print(x_pre)
accuracy_ = accuracy_score(y_test, x_pre)
print('准确度', accuracy_)
simple_pred = rf.predict(data)
if simple_pred[0] == 1:
return True
else:
return False
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = PredictionUI()
sys.exit(app.exec())
四、总结
通过预测模型,我们发现了一些反常识的结论:
- 有房有车仅排第5位(12.1%)
- 兴趣匹配度重要性不足8%
- 个人性格占60%的比重,说明个人魅力太重要
数据采集方面,大模型可以采集很多人的数据,数据越真实,得到的结果越准确。以上是根据某人的30次相亲经验进行训练,结果仅供参考。
热门推荐
绿色灭火器将退出市场,一起了解新国标
开发商破产业主买的人防车位怎么办
Excel公式相对路径使用指南:INDIRECT、HYPERLINK函数详解
电路图正负极怎么看
喝中药后多久可以喝茶
GPT-4、PaLM-2等AI模型对黑人or女性存在偏见?丨AI偏见的案例和应对
让“互联网+明厨亮灶”更好托举校园食品安全
人像摄影中,如何构建人物与环境的关系?
客户匹配度怎么量化管理
跨省通勤•京津冀协同发展11年特别报道②|天津医生刘洋:自驾沧州去坐诊
如何便捷预约儿童疫苗接种?
小小疫苗暖万家 基层接种信息化
如何分析平均股价走势提升投资决策
游泳技巧 | 蛙泳换气,做到三点,越来越轻松
手机HDR高动态范围图像拍摄详解:原理、应用场景与注意事项
可以补救身体阴阳两虚的食物,很关键
玉石之光:和田玉,中华文化自信的璀璨篇章
男性在不同年龄段的饮食指南
关于失恋,这3点建议绝对可以帮到你
杭州龙井村:特色旅游助力乡村振兴
高收入岗位通常需要具备哪些特质才适合作为求职意向
房产公证有几种方式,法律规定是什么?
香港法定工作时间:现状、影响与展望
卫生间墙面砖价格全攻略:从材料选择到施工注意事项
如何在装修中选择合适的卫生间墙砖?这种选择需要考虑哪些因素?
红薯升糖指数高吗
如何预防视网膜动脉阻塞
新冠疫苗成分全解析:五种技术路线详解,接种注意事项一文掌握
菊花如何种植?菊花什么时间种 菊花的种植时间及高产种植技术
佛罗里达州利用昆虫不育技术抑制蚊虫病媒