一.查看自己的机器学习项目清单,看是否做过类似项目。(算法,模型等)

二.划定问题

1.商业目标:公司如何使用模型,需要什么指标评估模型? 交给自己的任务是解决哪个阶段的问题?
2. 目前需要改进的解决方案是什么?
3. 1)supervised or unsupervised,强化学习
2) 分类or 回归
3)批量学习or线上学习?
eg:监督学习:有标签的训练样本(有预定的输出值y)
回归问题:有预测值,有输入变量(features)

三.选择性能指标

RMSE:均方根误差:测量系统预测误差的标准差。(大多数使用)
MAE:平均绝对偏差:训练样本存在许多异常数据
pandas库 调用.read_csv方法加载数据集
.head()方法浏览前五行数据

#使用pandas加载数据
#这个函数会返回一个包含所有数据的 Pandas DataFrame 对象。
import pandas as pd
housing=pd.read_csv("E:\deep learning go on\Sklearn and Tensorflow machine learning\housing.csv")
#读取数据集前五行
housing.head()

.info()方法方法可以快速获取数据集的简单描述,特别是总行数、每个属性的类型和非空值的数量,除了ocean_proximity的类型是文本类型之外,其余都是数字类型。而且发现total_bedrooms这一属性有部分值缺失。

#df.info()方法可以快速获取数据集的简单描述,特别是总行数、每个属性的类型和非空值的数量
housing.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20640 entries, 0 to 20639
Data columns (total 10 columns):
longitude             20640 non-null float64
latitude              20640 non-null float64
housing_median_age    20640 non-null float64
total_rooms           20640 non-null float64
total_bedrooms        20433 non-null float64
population            20640 non-null float64
households            20640 non-null float64
median_income         20640 non-null float64
median_house_value    20640 non-null float64
ocean_proximity       20640 non-null object
dtypes: float64(9), object(1)
memory usage: 1.6+ MB

#使用value_counts()方法可以查看有多少种类存在,有多少个实例属于这种类型
housing[“ocean_proximity”].value_counts(),此处查看的是数据中"ocean_proximity的属性"

#总数仍为20640
housing["ocean_proximity"].value_counts()
<1H OCEAN     9136
INLAND        6551
NEAR OCEAN    2658
NEAR BAY      2290
ISLAND           5
Name: ocean_proximity, dtype: int64

#使用df.describe()方法可以显示数值属性的摘要
#count–总行数
#mean–平均值
#min,max–最大值,最小值
#std–标准差(测量熟知的离散程度)
#25%,50%,75%(表示一组观测值中给定百分比的观测值都低于该值)
#total_bedrooms房间总数存在空值,被忽略
#housing是DataFrame类型,Pandas库,

housing.describe()


#柱状图(的纵轴)展示了特 定范围的实例的个数
#jupyter画图依赖于%matplotlib inline方法
import matplotlib.pyplot as plt
#对完整数据集调用 hist() 方法,会画出每个数值属性的柱状图
#对完整数据集调用hist()方法,绘画出每个数值属性的柱状图
#通过直方图查看 用来显示给定值范围(横轴)和实例数量(纵轴) bins——每张图柱子的个数 figsize——每张图的尺寸大小

housing.hist(bins=50, figsize=(20,15))
plt.show()

三.分层抽样

1.数据集偏小时使用,摆正测试集是有代表性的数据
2.对数据集进行预处理

#假设收入中位数 "median_income"的特征对Y的预测值尤为重要
#创建收入类别属性,对收入进行分层采样
#且分层数量不宜过大
#用ceil方法产生离散的分类,方法将数据四舍五入
#随机数种子:产生总是相同的洗牌指数,np.random.seed(42),防止每次运行程序测试集变化。
这里只是假设收入中位数与预测值相关性最强,有下面程序可以看出
#corr_matrix = housing.corr()
#corr_matrix[“median_house_value”].sort_values(ascending=False)
#看出收入中位数 "median_income"的特征对Y的预测值尤为重要,事实如此

import numpy as np
housing["income_cat"] = np.ceil(housing["median_income"] / 1.5) #不能有过多的分层,否则会产生偏差
housing["income_cat"].where(housing["income_cat"] < 5, 5.0, inplace=True)#通过对数据的预处理,收入中位数上限设置为5

#对收入分类分层抽样,使用StratifiedShuffleSplit方法
#提取训练集和测试集的时候注意train_index,test_index顺序不变

from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)#分割数据集,产生随机数种子,防止测试集发生变化for train_index,test_index in split.split(housing,housing["income_cat"]):#提取训练集和测试集strat_test_set=housing.loc[test_index]strat_train_set=housing.loc[train_index]
# #在完整的房产数据集中查看收入分类比例
housing["income_cat"].value_counts()/len(housing)

#散点矩阵
#重点关注,median_income属性,与median_house_value有最强的正相关性

housing.plot(kind="scatter", x="median_income",y="median_house_value", alpha=0.1)

#查看测试集中位数的比例
strat_test_set["income_cat"].value_counts()/len(strat_test_set)
#使数据回到初始状态,删掉"income_cat"
for set in (strat_train_set, strat_test_set): #drop函数删除分离出来的测试集,axis=1删除某列,inplace表示在原数据housing上改动set.drop(["income_cat"], axis=1, inplace=True)

#以上为数据处理基本操作,要会使用,工作会用

四.探索数据

#创建训练集副本
housing=strat_train_set.copy()

#根据经度,纬度创建所有街区的散点图
#hist 直方图, scatter散点图

housing.plot(kind="scatter",x="longitude",y="latitude")

#alpha: 透明度显示重叠部分,越密集地地方颜色越深,通过颜色地深浅可以看出数据集中分布在哪个区域。

housing.plot(kind="scatter",x="longitude",y="latitude",alpha=0.1)

#每个圈的半径代表人口s,颜色代表价格c,cmap引入颜色表jet,colorbar颜色表柱状图,均为plot()固定参数,颜色范围由蓝到红表示了房价的高低。
housing.plot(kind="scatter",x="longitude",y="latitude",alpha=0.4,s=housing["population"]/100,label="population",c="median_house_value",cmap=plt.get_cmap("jet"),colorbar=True,)
plt.legend()


#查找关联
#寻找每个属性与房间中位数的相关性越接近1,
#使用corr()方法计算出每对属性之间的标准相关系数
#将房价中位数(median_house_value)作为基准,看每个属性与房价中位数的相关性:
#相关性系数越接近1,正相关越强,可以看到收入中位数与房价中位数正相关性越强

corr_matrix = housing.corr()
#.sort_value()从大到小或从小到大排序,取决于ascending
corr_matrix["median_house_value"].sort_values(ascending=False)

#利用pandas scatter_matrix,画出每个数值属性对每个其他数值属性的图,eg:11个属性有11**2张图

from  pandas.plotting import scatter_matrix
attributes = ["median_house_value", "median_income", "total_rooms", "housing_median_age"]
scatter_matrix(housing[attributes], figsize=(12, 8))


#散点矩阵
#重点关注,median_income属性,与median_house_value有最强的正相关性
#相关性非常高;可以清晰地看到向上的趋势,并且数据点不是非 常分散

housing.plot(kind="scatter",x="median_income",y="median_house_value",alpha=0.1)


#属性组合实验
#在把数据提交给算法之前,要对数据进行处理,看是否有相关性更高的属性组合

housing["rooms_per_household"] = housing["total_rooms"]/housing["households"]#每户多少个房间
housing["bedrooms_per_room"] = housing["total_bedrooms"]/housing["total_rooms"]#
housing["population_per_household"]=housing["population"]/housing["households"]#每户的人口数

#整体数据集与标签"median_house_value"的相关性

corr_matrix1=housing.corr()
corr_matrix1["median_house_value"].sort_values(ascending=False)
#此时输出值是一个Series类型。下面补充Series类型用法
import pandas as pd
from pandas import Series
ser=Series([1,2,3,4],index=['a','b','c','d'])
a    1
b    2
c    3
d    4
dtype: int64

五.为机器学习算法准备数据

#你能慢慢建立一个转换函数库,可以在未来的项目中复用,
数据传给算法之前,你可以在实时系统中使用这些函数
#可以让你方便地尝试多种数据转换,查看哪些转换方法结合起来效果最好
#将目标输出重新创建一份数据
#drop()方法并不是在DataFrame()中删除属性,而是做备份。

housing = strat_train_set.drop("median_house_value", axis=1)
housing_labels = strat_train_set["median_house_value"].copy()
housing_num = housing.drop("ocean_proximity", axis=1)
housing_cat=housing["ocean_proximity"]

5.1数据清洗

#创建函数处理特征缺失的问题,"total_bedrooms"属性有缺失
#处理方案:
#1.去掉整个街区 dropna()
#2.去掉整个属性。drop()
#3.进行赋值(0,平均值,中位数等等)。fillna():指定用某属性的中位数来替换该属性所有的缺失值,,同样需要填充测试集

5.2使用中位数填补缺失数据:

#housing 是训练集中去掉标签属性的数据median = housing["total_bedrooms"].median()housing["total_bedrooms"].fillna(median)

#Scikit-Learn提供 Imputer 处理缺失值,等同于第三个方案
2.

from sklearn.preprocessing import Imputer
imputer = Imputer(strategy="median")

#需要创建不包括文本属性ocean_proximity的数据副本

housing_num = housing.drop("ocean_proximity", axis=1)

#imputer 计算出了每个属性的中位数,并将结果保存在了实例变量 statistics_ 中

imputer.fit(housing_num)
imputer.statistics_

#用中位数填补空缺

 X = imputer.transform(housing_num)
housing_tr=pd.DataFrame(X,columns=housing_num.columns)

5.2.1处理文本和类别属性方法一:

#转换器将文本转为数组

from sklearn.preprocessing import LabelEncoder
encoder=LabelEncoder()
housing_cat=housing["ocean_proximity"]
housing_cat_encoded=encoder.fit_transform(housing_cat)
housing_cat_encoded
print(encoder.classes_)

5.2.2处理文本和类别属性方法二:

#LabelBinarizer一步到位,先转文本,再独热编码

from sklearn.preprocessing import LabelBinarizer
encoder=LabelBinarizer()

#文本转换为数组

housing_cat_1hot=encoder.fit_transform(housing_cat)
housing_cat_1hot

#自定义转换器:添加不同数据组合,可能产生与预测值最相关的组合

from sklearn.base import BaseEstimator,TransformerMixin
rooms_ix, bedrooms_ix, population_ix, household_ix = 3, 4, 5, 6
class CombinedAttributesAdder(BaseEstimator,TransformerMixin):def __init__(self,add_bedrooms_per_room=True): # no *args or **kargsself.add_bedrooms_per_room=add_bedrooms_per_roomdef fit(self,X,y=None):return selfdef transform(self,X,y=None):rooms_per_household=X[:,rooms_ix]/X[:,household_ix]population_per_household=X[:,population_ix]/X[:,household_ix]if self.add_bedrooms_per_room:bedrooms_per_room=X[:,bedrooms_ix]/X[:, rooms_ix]return np.c_[X,rooms_per_household,population_per_household,bedrooms_per_room]else:return np.c_[X,rooms_per_household,population_per_household]attr_adder=CombinedAttributesAdder(add_bedrooms_per_room=False)
housing_extra_attribs=attr_adder.transform(housing.values)

#定义一个选择器,看是对那个数据进行处理(数据转换or分类)
#在流水线都已一个选择器开始,看是对那种数据进行转换(数据or分类)

from sklearn.base import BaseEstimator, TransformerMixin
class DataFrameSelector(BaseEstimator,TransformerMixin): def __init__(self,attribs):self.attribs = attribsdef fit(self,X,y=None):return selfdef transform(self,X):#这种情况下,X是dataframe格式return X[self.attribs].values#返回的为numpy array

#LabelBinarizer分类,TypeError: fit_transform() takes 2 positional arguments but 3 were given
#解决方法就是,自己写一个根据LabelBinarizer写一个MyLabelBinarizer,可以有三个参数self,X,y=None.(sklearn版本问题)
#这个类是自定义的,在写流水线的时候,有可能一些转换器错误,需要自定义

from sklearn.base import TransformerMixin #gives fit_transform method for free
class MyLabelBinarizer(TransformerMixin):def __init__(self, *args, **kwargs):self.encoder = LabelBinarizer(*args, **kwargs)def fit(self, x, y=0):self.encoder.fit(x)return selfdef transform(self, x, y=0):return self.encoder.transform(x)

六.流水线

#看最后一个流水线最后一个是估计器还是转换器,最后一个是估计器则调用fit()方法即可,此时转换器自动调用fit_sream(),最后一个估计器调用fit()
若都为转换器则调用fit_stream()
#FeatureUnion块的引入是流水线并发执行,效率高

from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import Imputer
from sklearn.preprocessing import LabelBinarizer
#housing_num是删去文本属性的训练集
num_attribs=list(housing_num)
#文本属性
cat_attribs=["ocean_proximity"]
#对数据的流水线
#StandardScaler是一个转换器,可以对流水线fit_transform
#若最后一个是估计器,则用fit()即可调用流水线上转换器的fit_tansform()
num_pipeline=Pipeline([('selector', DataFrameSelector(num_attribs)),#选择器,选择数据处理('imputer', Imputer(strategy="median")),#对数值填补缺失值('attribs_adder', CombinedAttributesAdder()),#属性组合('std_scaler', StandardScaler()),#特征缩放,标准化,防止异常数据干扰
])
#对文本的流水线
cat_pipeline=Pipeline([('selector', DataFrameSelector(cat_attribs)),#分类流水线('label_binarizer', MyLabelBinarizer()),#由于版本问题替代LabelBinarizer转换器做分类
])
#FeatureUnion的转换器并行执行
full_pipeline=FeatureUnion(transformer_list=[("num_pipeline", num_pipeline), ("cat_pipeline", cat_pipeline),
])
# 所有转换器并行执行
housing_prepared=full_pipeline.fit_transform(housing)
housing_prepared

七.选择和训练模型

1.线性回归模型

#在训练集上训练评估
#线性回归模型,小模型
#fit()方法使用训练集与标签训练模型,

from sklearn.linear_model import LinearRegression
lin_reg=LinearRegression()#lin_reg是一个估计器只有fit()
# 模型的两个输入,1.数据处理流水线输出的不含标签的训练集,2.训练集的标签
lin_reg.fit(housing_prepared,housing_labels)
# .iloc()对行数据索引
# housing此时是删除标签的训练集
some_data=housing.iloc[:5]#housing.iloc[0:5]
some_labels=housing_labels.iloc[:5]
some_data_prepared=full_pipeline.transform(some_data)#注意这里只用了转换器
print("Predictions:\t",lin_reg.predict(some_data_prepared))
# 该标签与以上预测结果对比
print("Labels:\t\t",list(some_labels))

#这里展示housing_prepared前五行与标签的对比

#全部训练集计算回归模型的均方根误差
#将训练好的线性模型lin_reg,使用predict方法,对训练集进行训练,用mean_squared_error()与sqrt()方法求loss。

from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
lin_reg=LinearRegression()
lin_reg.fit(housing_prepared,housing_labels)
housing_predictions=lin_reg.predict(housing_prepared)#对流水线输出的不含标签的训练集进行预测,housing_prepared为去掉标签的训练集#标签与预测集RMSE
lin_mse=mean_squared_error(housing_labels,housing_predictions)
lin_rmse=np.sqrt(lin_mse)#开方
lin_rmse#越小越好

2.决策树模型(非线性)

#同样使用fit()和predict()方法

from sklearn.tree import DecisionTreeRegressor
tree_reg=DecisionTreeRegressor()
tree_reg.fit(housing_prepared,housing_labels)
# 用训练集测试,训练集自己测试自己,过拟合
housing_predictions=tree_reg.predict(housing_prepared)#预测删除标签的训练集
tree_mse=mean_squared_error(housing_labels,housing_predictions)
tree_rmse=np.sqrt(tree_mse)
tree_rmse#误差为0,模型可能严重过拟合,添加验证过程

3.评估随机森林模型

# 随机森林
from sklearn.ensemble import RandomForestRegressor
# 加载模型
forest_reg=RandomForestRegressor()
# 训练模型
forest_reg.fit(housing_prepared,housing_labels)
# 预测
forest_predict=forest_reg.predict(housing_prepared)
# MSE评估
forest_mse=mean_squared_error(housing_labels,forest_predict)
forest_regest_mrse=np.sqrt(forest_mse)
forest_regest_mrse

七.使用交叉验证评估模型,K折交叉验证

#K折交叉验证,分成十折,训练十次,十组数据
#9个训练,一组评估

1.使用决策树模型做交叉验证

from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
tree_reg=DecisionTreeRegressor()
# 得到交叉验证的结果越大越好()
scores = cross_val_score(tree_reg, housing_prepared, housing_labels, scoring="neg_mean_squared_error", cv=10)
rmse_scores = np.sqrt(-scores)

###定义模型评分函数

def display_scores(scores):print("Scores:",scores)print("Mean:",scores.mean())print("Standard deviation:",scores.std())
display_scores(rmse_scores)

#Mean评分越低越好模型性能(),std代表评估的准确性,若过高,则模型过拟合

2.线性回归模型做K折交叉验证

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
lin_reg=LinearRegression()
lin_scores=cross_val_score(lin_reg,housing_prepared,housing_labels,scoring="neg_mean_squared_error",cv=10)
lin_rmse_scores=np.sqrt(-lin_scores)
display_scores(lin_rmse_scores)

3.随机森林评估模型

#对随机森林模型进行K折交叉验证

from sklearn.ensemble import RandomForestRegressor
# 加载模型
forest_reg=RandomForestRegressor()
from sklearn.model_selection import cross_val_score
scores = cross_val_score(forest_reg, housing_prepared, housing_labels, scoring="neg_mean_squared_error", cv=10)
forest_rmse_scores=np.sqrt(-scores)
display_scores(forest_rmse_scores)

八.模型微调

8.1.网格搜索

#对模型使用不同超参数组合,进行交叉验证

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor
param_grid=[{'n_estimators': [3, 10, 30], 'max_features': [2, 4, 6, 8]},{'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]},]
forest_reg = RandomForestRegressor()
grid_search = GridSearchCV(forest_reg, param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(housing_prepared,housing_labels)

#grid_search 是34+23=18个模型

8.2选出最佳参数组合

grid_search.best_params_

{‘max_features’: 8, ‘n_estimators’: 30}

8.3选出最佳模型

grid_search.best_estimator_

8.4使用不同超参数的评估得分

cvers=grid_search.cv_results_
for mean_score,params in zip(cvers["mean_test_score"],cvers["params"]):print(np.sqrt(-mean_score),params)

2.随机搜索
3.集成方法(组合模型)

8.5分析最佳估计器

#每个属性对于预测的重要性

feature_importances=grid_search.best_estimator_.feature_importances_
feature_importances

九.用测试集评估系统

我们在训练集上调用fit_transform(),其实找到了均值μ和方差σ^2,即我们已经找到了转换规则,我们把这个规则利用在训练集上,同样,我们可以直接将其运用到测试集上(甚至交叉验证集),所以在测试集上的处理,我们只需要标准化数据(transform)而不需要再次拟合数据。
final_model=grid_search.best_estimator #加载最佳超参数组合的模型
# 使用测试集进行验证
X_test=strat_test_set.drop("median_house_value",axis=1)
Y_test=strat_test_set["median_house_value"].copy();
#使用tansform方法不用fit_transform()
X_test_prepared=full_pipeline.transform(X_test)
final_predictions=final_model.predict(X_test_prepared)final_mse=mean_squared_error(Y_test,final_predictions)
final_rmse=np.sqrt(final_mse)
final_rmse

课后练习以及知识点补充

  1. 尝试在准备流水线中添加一个只选择最重要属性的转换器。
    #feature_importances=grid_search.best_estimator_.feature_importances_
    feature_importances
    #feature_importances是来自网格搜索GridSearchCV,不同属性对于最佳模型的重要程度
    #indices_of_top_k函数是指:将最重要的属性排序,并取前k个属性。输入分别是属性相关值,和取值范围
    #np.argpartition()返回的索引
from sklearn.base import BaseEstimator, TransformerMixindef indices_of_top_k(arr, k):return np.sort(np.argpartition(np.array(arr), -k)[-k:])class TopFeatureSelector(BaseEstimator, TransformerMixin):def __init__(self, feature_importances, k):self.feature_importances = feature_importancesself.k = kdef fit(self, X, y=None):self.feature_indices_ = indices_of_top_k(self.feature_importances, self.k)return selfdef transform(self, X):return X[:, self.feature_indices_]k=5

#因为我的程序无法输出第五个值,所以只取前四个
#这里采用numpy换列表内容的形式。

top_k_feature_indices=indices_of_top_k(feature_importances,k)
list_a=[0,1,7,9]
top_k_feature_indices=np.array(list_a)
top_k_feature_indices
array([0, 1, 7, 9])

#attributes:是与输出最相关的特征
attributes = [“median_house_value”, “median_income”, “total_rooms”, “housing_median_age”]

np.array(attributes)[top_k_feature_indices]
array(['longitude', 'latitude', 'median_income', 'pop_per_hhold'],dtype='<U18')

#输出最相关属性,与代表相关性的值

sorted(zip(feature_importances,attributes),reverse=True)[:k]

#建立流水线

preparation_and_feature=Pipeline([('preparation',full_pipeline),('feature_selection',TopFeatureSelector(feature_importances,k))
])

#清洗数据并提取最重要的属性,与下方代码输出结果对比

housing_prepared_top_k_features = preparation_and_feature.fit_transform(housing)
housing_prepared_top_k_features[0:3]array([[-1.15604281,  0.77194962, -0.61493744, -0.08649871,  0.        ],[-1.17602483,  0.6596948 ,  1.33645936, -0.03353391,  0.        ],[ 1.18684903, -1.34218285, -0.5320456 , -0.09240499,  0.        ]])
housing_prepared[0:3, top_k_feature_indices]
array([[-1.15604281,  0.77194962, -0.61493744, -0.08649871],[-1.17602483,  0.6596948 ,  1.33645936, -0.03353391],[ 1.18684903, -1.34218285, -0.5320456 , -0.09240499]])

《机器学习实战》二 房价预估相关推荐

  1. 机器学习实战二:波士顿房价预测 Boston Housing

    波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...

  2. Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析

    Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上,分析研究波士顿房价( Boston HousePrice)的数据集. 在这个项目中,你将利用马萨诸塞州波 ...

  3. Spark机器学习实战 (十二) - 推荐系统实战

    0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...

  4. 机器学习实战(十二)降维(PCA、SVD)

    目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...

  5. 【10月31日】机器学习实战(二)决策树:隐形眼镜数据集

    决策树的优点:计算的复杂度不高,输出的结果易于理解,对中间值的确实不敏感,可以处理不相关的特征数据 决策树的缺点:可能会产生过度匹配的问题. 其本质的思想是通过寻找区分度最好的特征(属性),用于支持分 ...

  6. 机器学习(二)多元线性回归算法预测房价

    机器学习(二)多元线性回归算法预测房价 本篇文章已作为重庆交通大学19级微课<机器视觉>大作业提交,提前声明,避免抄袭误会 "garbage in garbage out&quo ...

  7. 《机器学习实战》个人学习记录笔记(二)———k-近邻算法实战之约会网站配对效果判定

    第二章 k-近邻算法 PS:个人笔记 根据<机器学习实战>这本书,Jack-Cui的博客,以及深度眸的视频进行学习 k-近邻算法的一般流程 ①收集数据:可以使用爬虫进行数据的收集,也可以使 ...

  8. 统计学方法机器学习实战(二) K近邻算法

    目录 一.前言: 二.理论难点: 距离度量: 欧式距离: 三.数据可视化 四.数据归一化: 五.代码实践: 理论补充 实验一: 海伦约会 实验二 使用sklearn实现knn 六.总结 1.kNN算法 ...

  9. 《机器学习》及实战二、K-近邻算法(KNN)理论及实战

    Python版本: Python3.x 运行平台: Windows IDE: PyCharm 参考资料:<机器学习>(西瓜书)<机器学习实战>(王斌) 转载请标明出处 数据下载 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(三十六) - GraphSLAM
  2. Makefile的补充学习
  3. 【在线记事本】一个程序员的随笔(与技术无关)
  4. mysql日期截取年月_摄影大赛丨“我遇见最美的光”第五届全国医务人员摄影大展 截稿日期2020年8月15日...
  5. 简化得最没道理的6个汉字,让人大跌眼镜
  6. 如果你不喜欢Windows 11开始菜单,还可以用注册表换回Windows 10样式
  7. python爬虫可以用acada_python爬虫从入门到放弃(四)之 Requests库的基本使用(转)...
  8. 地平线后端开发实习面经
  9. Spring Boot项目实战:BBT版西蒙购物网
  10. Python面试题解答——第三部分Python高级
  11. SLAM的一些基础知识
  12. numpy - np.reshape:将二维数组转变三维数组
  13. 前后端分离项目,标准json协议格式参考
  14. Tomcat免安装版执行tomcat9.exe闪退
  15. ANSYS18.2/HFSS18.2安装步骤
  16. 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了
  17. 每日分享:DNS解析记录
  18. Filament Android 编译搭建(基于Ubuntu环境)
  19. 设计模式03 - 装饰者模式
  20. 摸底考察-Linux系统搭建WEB网站服务

热门文章

  1. 换主板、换硬件、换平台而不重装系统
  2. SAP 采购订单入库——退货、免费入库
  3. 海外服务器被攻击怎么办?IP被封要如何处理?
  4. Odoo14免费开源ERP:企业客户档案信息自动补全功能演示
  5. 顺通订单及客户档案资料管理系统
  6. 在冥冥中那些昵称是见识到
  7. 芒果PPT助手功能介绍
  8. 便利蜂Android面经
  9. 科技人才与产业共振 清微智能与全球科学英才“星耀南湖”
  10. 解决方案:java.lang.IllegalArgumentException: 为此cookie指定的域[localhost:xxxx]无效