用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次相亲经验进行训练,结果仅供参考。
热门推荐
一文读懂静脉输液港:化疗患者福音,可减少95%穿刺次数
一文详解输液港六大并发症:从预防到治疗
PICC和输液港居家护理指南:活动、洗澡、维护全攻略
植入式输液港:肿瘤患者长期治疗的福音
化疗周期为何21天?国际先进疗法让治疗不再痛苦
药物治疗加饮食调整,有效缓解化疗后恶心呕吐
脑瘤患者术后调理:田七炖鸡和菊花枸杞茶两款药膳
专家推荐:化疗后食用5种水果可缓解不适
稻城亚丁:春赏杜鹃夏露营,秋看红草冬滑雪
从牛奶海到红草地:稻城亚丁摄影机位与作品精选
南昌之星摩天轮:160米高空俯瞰英雄城
南昌红谷滩:VR技术让红色历史“触手可及”
红谷滩区数字经济崛起,智能制造领航
从积极回应到有效沟通:专家解析亲子关系建立之道
家长必读:与抑郁孩子沟通的五个关键
特洛伊遗址见证文明:从荷马史诗到世界遗产
元旦特展!台北故宫精选唐宋元明清书画珍品
大麦若叶青汁富含多种抗氧化成分,科学饮用助力养生保健
大麦若叶青汁热销:SOD含量高,清肠排毒效果佳
CA72-4:胃癌诊断的金标准与未来方向
高境镇开设社区伤口护理门诊,专业团队提供全程管理
输液治疗护理全攻略:从基础操作到特殊人群护理
从信息共享到科研发展:护理会诊的价值全解析
输液护理智能化升级,患者体验全面提升
长沙至常德铁路线路再升级!“绿巨人”动车组正式上线运营
2025春运常德火车站增开43趟临客,长沙至常德出行指南
草莓糖葫芦DIY,冬季限定甜蜜来袭
冬季DIY冰糖葫芦,健康又美味!
牙痛的成因和预防方法
天天刷牙,你真的刷对了吗?这些习惯,可能正在毁掉你的牙!