学习Titanic中遇到的一些问题及解决方法(如Glyph 20917,as_matrix(),reshape(-1, 1),got l1 penalty)

原本代码源自:https://blog.youkuaiyun.com/han_xiaoyang/article/details/49797143

那些因为版本问题出现的错误

1原本代码:

import matplotlib.pyplot as plt
fig = plt.figure()
fig.set(
alpha=0.2# 设定图表颜色alpha参数

….

error:

RuntimeWarning: Glyph 20917 missing from current font.

  font.set_text(s, 0, flags=flags)

Solution:添加字体类型

 

import matplotlib.pyplot as plt
plt.rcParams[
'font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False
fig = plt.figure()
fig.set(
alpha=0.2# 设定图表颜色alpha参数

….

2原本代码:

def set_missing_ages(df):
   
# 把已有的数值型特征取出来丢进Random Forest Regressor
   
age_df = df[['Age', 'Fare', 'Parch', 'SibSp', 'Pclass']]

   
# 乘客分成已知年龄和未知年龄两部分
   
known_age = age_df[age_df.Age.notnull()].as_matrix()
    unknown_age = age_df[age_df.Age.isnull()].as_matrix()
 
    # y即目标年龄
….

error:

AttributeError: 'DataFrame' object has no attribute 'as_matrix'

Solution: #原本的pandas使用df.as_matrix() 改成现在的pandas应该使用df.values()

def set_missing_ages(df):
   
# 把已有的数值型特征取出来丢进Random Forest Regressor
   
age_df = df[['Age', 'Fare', 'Parch', 'SibSp', 'Pclass']]

   
# 乘客分成已知年龄和未知年龄两部分#  
   
known_age = age_df[age_df.Age.notnull()].values
    unknown_age = age_df[age_df.Age.isnull()].values
#现在的pandas是使用df.values()

    # y
即目标年龄
   
y = known_age[:, 0]

….

注:文中的所有df.as_matrix()均改成df.values()

3原本代码:

import sklearn.preprocessing as preprocessing
scaler = preprocessing.StandardScaler()
age_scale_param = scaler.fit(df[
'Age'])
df[
'Age_scaled'] = scaler.fit_transform(df['Age'], age_scale_param)
fare_scale_param = scaler.fit(df[
'Fare'])
df[
'Fare_scaled'] = scaler.fit_transform(df['Fare'], fare_scale_param)
df

….

error:

Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Solution: 数据归一出现的reshape问题

import sklearn.preprocessing as preprocessing
scaler = preprocessing.StandardScaler()
age_scale_param = scaler.fit(df[
'Age'].values.reshape(-1, 1))
df[
'Age_scaled'] = scaler.fit_transform(df['Age'].values.reshape(-1, 1), age_scale_param)
fare_scale_param = scaler.fit(df[
'Fare'].values.reshape(-1, 1))
df[
'Fare_scaled'] = scaler.fit_transform(df['Fare'].values.reshape(-1, 1), fare_scale_param)

….

4原本代码:

# fitRandomForestRegressor之中
clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)
clf.fit(X, y)
clf

….

error:

ValueError: Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.

Solution: 解决办法源自:https://blog.youkuaiyun.com/qq_22592457/article/details/103504796

# fitRandomForestRegressor之中
clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6,solver='liblinear')
clf.fit(X, y)
clf

….

第一次写类似这样的博文,不知道会不会冒犯原著,但是希望能帮到大家,一起努力学习机器学习,学习kaggle~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值