幸存者偏见

我要说的是一个真实的故事,这个故事是我去年过年回家的时候我爸给我讲的。

去年附近山上建了一座财神庙。财神庙建成后,邀请了附近几个镇上一些大户,免费参加开光仪式。开光仪式有吃有喝,还有小礼品。这些人也都乐于参加。

但是在开光仪式上,主持人让这些人对财神爷赵公明许愿。财神爷神通广大,不光能保你发财,还能保你家小孩上大学。许愿也很简单,不需要花钱买东西,也不要捐钱给功德箱。你只要对财神爷许愿就行,比如:

如果我家小孩能考上大学,我愿意给你挂1000元红。或者如果我今年做生意能赚20万,我给你挂2000元红等等。

只有当你的愿望成真了,你才需要跟财神爷兑现你的承诺。当然如果没有成真,就不需要兑现承诺了。

据说我们村里的几个大户还都许愿了。

我听完之后就知道这是骗钱的,但是也不得不佩服现在骗钱的手段。人对人的承诺可以反悔,但是对神的承诺应该没有人敢反悔吧。

只知道这是骗人的,但是不知道原理,直到今天听了刘润老师音频,才知道这叫幸存者偏见。这个名字的来源是:

二战时,从战火中返航的飞机机翼中弹多,而飞行员座舱和飞机尾部发动机的部分中弹少。为了提高飞机的防御力,作战指挥官认为应该对机翼加强装甲。但是有个叫沃尔德的专家认为应该对座舱和尾部发动机加固,理由是打中机翼的还能飞回来,打中座舱和尾部发动机的很难再飞回来。

意思是只能看到成功的结果,对那些不成功的视而不见。

上面对财神爷许愿就是利用了幸存者偏见。实现了才给钱,不灵不给钱。这跟江湖郎中号称有祖传秘方保生男孩,一副药2000元,生了男孩在给钱,不灵不要钱的骗术是一样的。

这样的例子在生活中很多,比如:某某买彩票中了大奖,但是我们忘了还有多少人没有中。某某炒股票赚了钱,但是我们没看到多少人赔了等等。

这也告诉我们,看事情不能只看成功的一面更应该看失败的那一面。因为成功,才是靠运气,是幸存者。

以下是使用Jupyter Notebook进行泰坦尼克号幸存者分类的步骤: 1. 导入必要的库和数据集 ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline train_data = pd.read_csv('train.csv') test_data = pd.read_csv('test.csv') ``` 2. 数据探索和可视化 ```python # 查看数据集前5行 train_data.head() # 查看数据集信息 train_data.info() # 查看数据集中数值型特征的统计信息 train_data.describe() # 查看数据集中各特征之间的相关性 sns.heatmap(train_data.corr(), annot=True, cmap='coolwarm') # 查看幸存者和未幸存者的数量 sns.countplot(x='Survived', data=train_data) # 查看不同性别的幸存者和未幸存者的数量 sns.countplot(x='Survived', hue='Sex', data=train_data) # 查看不同船舱等级的幸存者和未幸存者的数量 sns.countplot(x='Survived', hue='Pclass', data=train_data) # 查看不同年龄段的幸存者和未幸存者的数量 sns.histplot(x='Age', hue='Survived', data=train_data, kde=True) ``` 3. 数据清洗和特征工程 ```python # 填充缺失值 train_data['Age'].fillna(train_data['Age'].median(), inplace=True) test_data['Age'].fillna(test_data['Age'].median(), inplace=True) test_data['Fare'].fillna(test_data['Fare'].median(), inplace=True) # 将性别和登船港口转换为数值型特征 train_data['Sex'] = train_data['Sex'].map({'male': 0, 'female': 1}) test_data['Sex'] = test_data['Sex'].map({'male': 0, 'female': 1}) train_data['Embarked'] = train_data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2}) test_data['Embarked'] = test_data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2}) # 创建新特征FamilySize和IsAlone train_data['FamilySize'] = train_data['SibSp'] + train_data['Parch'] + 1 test_data['FamilySize'] = test_data['SibSp'] + test_data['Parch'] + 1 train_data['IsAlone'] = np.where(train_data['FamilySize'] == 1, 1, 0) test_data['IsAlone'] = np.where(test_data['FamilySize'] == 1, 1, 0) # 删除无用特征 train_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin', 'SibSp', 'Parch'], axis=1, inplace=True) test_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin', 'SibSp', 'Parch'], axis=1, inplace=True) ``` 4. 模型训练和预测 ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score X = train_data.drop('Survived', axis=1) y = train_data['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = LogisticRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test) print('Accuracy:', accuracy_score(y_test, y_pred)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值