好男生找不到女朋友的原因

转自校内 不代表本人观点  如有雷同活该倒霉

男人不坏,女人不爱。这句话在现实中非常准确。虽然很多女人会矢口否认这一点甚至对此嗤之以鼻。但实际上,坏男人的求爱方式的确比好男人的方式有效得多。



  坏男人的特点是:脸皮厚,大胆,善于撒谎,不太受道德约束,花招诡计多,一旦有机会“日”后再说,不负责任。而这些特点恰恰击中了女人的软肋。



  假设硬件条件相似的好男人和坏男人遇到同一个女人,坏男人的杀伤力要强出N倍。



  首先,好男人的出手概率要小得多,因为好男人开始追求之前就要考虑负责任的问题,所以不完全中意的不会去追,条件不成熟的目前不能追,对方已有男友的 不能追,未来前景不看好(例:在不同城市)的不能追,限制极多。而坏男人反正也没打算负责任,只要对方有点姿色,或是触手可得,一概先追了再说。



  第二,好男人诚实,没钱没关系就实话实说,对女方的缺点也坦诚相告,往往让女人很失望。而坏男人随便编两个故事就可以显得自己实力超群;对女人花言巧 语又很容易让她们心花怒放,认为找到了知己伯乐。在这个浮躁的社会背景下,好男人多年的辛苦努力换来的成果多半还不如一个坏男人用3分钟时间编出来的故事 更能让女人心动。



  第三,好男人总想着尊重对方,不会找机会调戏非礼。而坏男人通过调笑,酒精,跳舞等方式随时刺激女人的荷尔蒙,一有机会就把对方占为己有。女人的快感 一旦被调动起来,反而很快会爱上这个男人。坏男人一次嘿咻的效果往往超过好男人默默的多次付出。有些傻女人认为男人上了她就是爱上了她;更傻的女人认为一 旦被男人上了,她就必须爱上这个男人。女人的本性中隐含着逆来顺受的基因。



  第四,好男人真心付出,把双方的感情看得很重,心态容易不平衡,为一些小事和女友争吵。而坏男人心想:反正我不过是做一场游戏,找点刺激罢了,哄哄她得了,生个什么气啊?心态更平和,反而显得成熟个性好。



第五,坏男人的约会经验通常比好男人多得多。参照第一条,坏男人一有机会就出手,即使不成功也积累了经验,逐渐了解了女人的心理。女人大多不理智,有种种 莫名其妙完全不合逻辑的偏见(比如:一个鞋上有污点的男人一定***不住)。坏男人通过大量的实战经验在约会时把这些表面工作做得很好,而好男人却懵然不 知,被唰了都不明白为什么,还以为是自己实力不够。



  第六,双方发生争执时,好男人自尊心,原则性强,不会轻易迁就对方,往往为些小事谁都不让步,最后只能分手。而坏男人脸皮厚,认个错比喝稀饭都容易, 往往轻而易举就能哄得对方回心转意;当然,那是在他还没有玩腻的时候,否则即使女方让步他也能找出借口分手,有时候女人反而会一再让步,彻底沦为坏男人的 玩物。



  第七,好男人原则性强,循规蹈矩,往往显得乏味。而坏男人一心追求刺激,变化多端,常常给女人以新鲜感。不知不觉中,女人就被坏男人迷惑住,控制住了。



  第八,如果女人认识到双方不合适,提出主动分手。好男人只会采取光明正大的手段,实际效果有限;而坏男人可以不择手段,死缠滥打,威逼利诱。女人的惰性强,情感多变,又容易向强势低头,常常摆脱不了坏男人的下三滥手段。



  大部分女人虚荣心、自尊心很强,喜欢甜言蜜语,对生活的期望值不现实(爱情小说,电影看多了的后果)。造成的后果是诚实的好男人达不到她们的期望值,只有骗子男人才能编造出一个她们心目中的理想世界。



  这就好比正规医生告诉你一个病要花很多钱,吃很多药,最后还难以根治(真实情况往往不够理想);而江湖郎中骗你说两三幅药,几天就能搞定,而且另外还有美容,强身等种种功效。一个缺乏保健知识的人就很可能上江湖郎中的当。



  区别在于:被江湖郎中欺骗的那些病人发现被骗后多半会去找对方算账;而被色狼欺骗的女人往往有苦难言(觉得不光彩,说不清楚,或者嫁鸡随鸡认命了)。 另外,对于多数女人来说,搣上床攠造成两人关系的质变。占有她身体的男人比起其他男人有太多的优势(亲密程度大大增强,对方无形之中多出很多操纵女方身体 及行为的权力,等等)。



  坏男人能做到的,好男人为什么做不到呢?很简单,因为好男人在乎道德与负责任,顾忌太多。等好男人明白过来,好的早给人家“上”了。非处又说不要。



  另外,好男人永远也不可能做到像骗子那样心态平和。对于好男人,你是他生命中的重要组成部分,他对你的过去,现在,未来都在意。而骗子要的只是眼前的 一点刺激,当然更容易为达到目标而迎合你。骗子更能容忍你的缺点,因为他只需要容忍几天,一两个月;而好男人却要计划一辈子的前景,所以必须进行一些磨合 工作!

<think>好的,用户想用Python在Geany里实现ID3算法,构建决策树来判断女朋友是否合适。首先得明确ID3算法的步骤,包括计算信息增益、选择划分属性、递归构建树等。然后要处理如何在Geany中配置Python环境,确保代码能正确运行,特别是用到的库如matplotlib绘图的问题。 首先,用户可能已经按照之前的引用配置了Geany的Python路径,但需要确认是否指向正确的Python环境,比如miniconda的Python。这里需要检查构建命令中的%f路径是否正确,引用[2]提到要注意空格和路径设置,确保Geany调用的是安装了所需库的Python解释器。 接下来是实现ID3算法。需要处理样本数据,计算信息熵和信息增益。用户提供的样本数据包括特征和标签,需要转换成Python的数据结构,比如字典或DataFrame。然后,编写信息熵计算的函数,这里要注意对数运算的底数以及处理概率为零的情况。 然后是选择最佳划分属性,这一步需要遍历所有特征,计算每个特征的信息增益,选择增益最大的特征作为节点。递归构建决策树,直到所有样本属于同一类别或没有更多特征可用。这里需要考虑如何处理连续特征,比如身高,但根据问题描述,可能已经离散化为“身高163cm以上”,所以可以当作分类特征处理。 构建完决策树后,需要可视化,可能需要用到matplotlib库。用户需在Geany中确保该库已安装,否则在命令行中使用conda或pip安装。引用[4]提到在Geany中新建.py文件并配置构建命令,所以用户需要确认在正确的环境中安装了这些库。 最后是预测函数,根据输入的特定特征,遍历决策树得到预测结果。测试案例中给出的特征需要与训练数据中的特征一致,比如“脾气差”对应“是”或“否”,可能需要将连续值如年龄差距较大转换为分类变量。 潜在问题:Geany执行时可能不到图形后端,导致绘图失败。可以建议用户将绘图保存为文件而不是显示,或者配置matplotlib使用Agg后端。此外,样本数据量小可能导致过拟合,需要提醒用户数据量的影响。 相关问题部分需要考虑用户可能的后续疑问,比如如何处理连续特征、其他算法如C4.5的区别,Geany调试技巧,以及决策树的评估方法。这些扩展问题帮助用户深入理解和应用ID3算法。</think>### 分步实现指南 #### 1. 环境配置 - **确认Geany的Python路径** 确保Geany指向已安装`numpy`和`matplotlib`的Python环境(如miniconda) ```text 构建命令示例:D:\Miniconda\python.exe -m py_compile "%f" ``` 引用[2]提到的%f路径需与Python实际安装路径一致,注意路径中的空格需用引号包裹[^2]。 #### 2. 数据准备 定义样本数据集(假设标签为“是否适合”): ```python data = [ {'脾气': '差', '身高': '>163', '身材': '一般', '经济条件': '无', '年龄差距': '大', '适合': '否'}, {'脾气': '好', '身高': '>163', '身材': '良好', '经济条件': '有', '年龄差距': '小', '适合': '是'}, # 补充更多样本... ] ``` #### 3. 核心算法实现 ##### (1) 信息熵计算 $$H(S) = -\sum_{i=1}^{n} p_i \log_2 p_i$$ ```python import math def entropy(labels): counts = {} for label in labels: counts[label] = counts.get(label, 0) + 1 probs = [cnt / len(labels) for cnt in counts.values()] return -sum(p * math.log2(p) for p in probs if p > 0) ``` ##### (2) 信息增益计算 $$IG(S, A) = H(S) - \sum_{v \in Values(A)} \frac{|S_v|}{|S|}H(S_v)$$ ```python def information_gain(data, feature): all_labels = [d['适合'] for d in data] total_entropy = entropy(all_labels) feature_values = {} for d in data: val = d[feature] if val not in feature_values: feature_values[val] = [] feature_values[val].append(d['适合']) weighted_entropy = 0 for val, labels in feature_values.items(): weighted_entropy += (len(labels)/len(data)) * entropy(labels) return total_entropy - weighted_entropy ``` #### 4. 决策树构建 ```python def build_tree(data, features): labels = [d['适合'] for d in data] # 终止条件 if len(set(labels)) == 1: return labels[0] if not features: return max(set(labels), key=labels.count) # 选择最佳划分特征 gains = [(f, information_gain(data, f)) for f in features] best_feature = max(gains, key=lambda x: x[1])[0] tree = {best_feature: {}} remaining_features = [f for f in features if f != best_feature] # 递归构建子树 for val in set(d[best_feature] for d in data): subset = [d for d in data if d[best_feature] == val] tree[best_feature][val] = build_tree(subset, remaining_features) return tree ``` #### 5. 可视化实现 ```python import matplotlib.pyplot as plt def plot_node(node_txt, center_pt, parent_pt): plt.annotate(node_txt, xy=parent_pt, xycoords='axes fraction', xytext=center_pt, textcoords='axes fraction', va="center", ha="center", bbox=dict(boxstyle="round", fc="w")) def plot_tree(tree, parent_pt, node_txt): num_leafs = len(tree) first_key = next(iter(tree)) center_pt = (plot_tree.xOff + (1.0 + num_leafs)/2.0/plot_tree.totalW, plot_tree.yOff) plot_node(first_key, center_pt, parent_pt) plot_tree.yOff = plot_tree.yOff - 1.0/plot_tree.totalD for val, subtree in tree[first_key].items(): if isinstance(subtree, dict): plot_tree(subtree, center_pt, str(val)) else: plot_tree.xOff = plot_tree.xOff + 1.0/plot_tree.totalW plot_node(subtree, (plot_tree.xOff, plot_tree.yOff), center_pt) plot_tree.yOff = plot_tree.yOff + 1.0/plot_tree.totalD ``` #### 6. 预测函数 ```python def predict(tree, sample): if not isinstance(tree, dict): return tree feature = next(iter(tree)) value = sample.get(feature) if value not in tree[feature]: return '未知' # 处理未见过的情况 return predict(tree[feature][value], sample) ``` #### 7. 执行流程 ```python if __name__ == "__main__": features = ['脾气', '身高', '身材', '经济条件', '年龄差距'] decision_tree = build_tree(data, features) plt.figure(figsize=(8,6)) plot_tree.totalW = 5.0 plot_tree.totalD = 3.0 plot_tree.xOff = -0.5/plot_tree.totalW plot_tree.yOff = 1.0 plot_tree(decision_tree, (0.5,1.0), '') plt.show() test_case = {'脾气':'差', '身高':'>163', '身材':'良好', '经济条件':'有', '年龄差距':'大'} print(predict(decision_tree, test_case)) # 输出预测结果 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值