RemoveError: 'setuptools' is a dependency of conda and cannot be removed from conda's operating environment.
今天莫名其妙,我的jupyter
总是报这个错误,然后打开的时候Home
可以显示,但具体的文件打开总是一片空白。第一反应是上次非正常关机导致jupyter的配置或者哪里出了什么bug,所以第一个 想到的解决思路是重装Jupyter。但是重装后总是显示,Setuptools
有问题,如下:
就搞得很郁闷,于是就上CSDN看了一下,发现说的是浏览器打开少了点配置,具体看这里:
https://blog.csdn.net/xavier_muse/article/details/83830394
尝试了一波,还是没解决。郁闷极了,本来想着重装一遍Anaconda
,但是有点担心之前配的那些环境都没了,所以随手复制了一下Host在Edges打开,奇迹出现了!!!居然可以呈现,真的是不知道哪里搭错了,上百度看了一下,也有人反映这样的问题,求大佬解释一下具体原因。
顾名思义,机器学习的主体是机器,谓语是学习,说的就是研究怎么让机器学东西。但是他们看的不是书,看的是一堆数据,说白了,就是让计算机从一堆数据中,通过我们设定好的数学模型与算法,从而在数据中找到某种规律(或者称为模式)。对于一个新的场景或者样本的特征,利用这个规律,对未知的或者无法获取的数据进行预测。
常见的机器学习应用场景有:天气预测、股市预测、字符识别、语音识别、人脸识别等等,对于人类而言,这些任务是很容易被实现的,但是对于机器,由于我们不知道我们自己是怎么会的,只是能完成这样子的任务。所以,我们很难人工设计一个算法实现我们学习的过程。
随着统计学的推进与发展,人们尝试着去对一些线性的有标注的数据进行计算,企图找到一条直线,来揭示样本的特征 X X X与值 y y y的关系,所以这就是在有标注的数据集上做的一种尝试,即有监督学习,给定某些特征去估计因变量,因变量存在的时候,我们称这个机器学习任务为有监督学习。在有监督学习任务中,如果我们研究的数据集的因变量是连续的,我们称这个任务为回归,也就是说,找到的这个模型是连续的。否则,我们就是对一些数据在进行区分,加以分类,我们称其为分类。
随着生产的需要,我们发现有些数据我们似乎找不到他们的因变量 y y y,需要我们去用算法分辨出各种类别之间的区别,从而将数据进行某种“分类”(这里分类是不太标准的说法,因为分类属于有监督学习,而在没有因变量标注的情况下的“分类”,我们称之为聚类)。
显然,可以。
在实际的应用中,有许多的模型已经被大佬们研究出来了,你只要稍微的了解他的应用背景,和优缺点,以及在使用中的坑,我想你已经能够解决大部分生活中的机器学习问题,只是如果希望得到一个很好的效果,那么建议还是学一下原理。另外,python
与R
语言已经集成了大量的包与函数,您只需会import
、fit
基本上就能使得动大部分的库和模块了,当然,您依旧需要一点关于python
或者R
编程的知识。在这个专题中,我们还是主要以python
的实战为主。
下面介绍一下在python
中常见的常见的机器学习库:
np
。import numpy as np
pd
。import pandas as pd
ggplot2
的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离。按图层作图,保有命令式作图的调整函数,使其更具灵活性,并将常见的统计变换融入到了绘图中。%matplotlib
,也就是说那一份代码可能就是别人使用jupyter notebook 或者 jupyter qtconsole进行编辑的。%matplotlib
具体作用是当你调用matplotlib.pyplot
的绘图函数plot()
进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot")
import seaborn as sns
如何用sklearn的例子实现回归呢?首先我们要明白我们究竟要做什么:我们希望找到一个有多个变量的函数 f f f,当我们输入特征1、特征2、特征3、···、特征 k k k时,我们可以通过函数 f f f得到一个输出值(或是一个向量),使得这些输出值误差越少越好。具体的算法和原理,我们在下篇文章具体的去讨论,我们先使用一个数据集Boston房价数据来演示一遍这个过程。
sklearn
# 引入相关科学计算包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot")
import seaborn as sns
from sklearn import datasets
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data
y = boston.target
features = boston.feature_names
pandas
将返回的ndarray
转换成DataFrame
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
我们画出具体的一个特征 NOX一氧化氮浓度(千万分之一) 与价格的关系。
sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()
我只选取了部分特征,分别是:较低地位人口、按城镇分配的学生与教师比例、每个住宅的平均房间数
data_pd = data_pd[['LSTAT','PTRATIO','RM','price']]
y = np.array(data_pd['price'])
data_pd=data_pd.drop(['price'],axis=1)
X = np.array(data_pd)
# 分割训练集和测试集
train_X,test_X,train_Y,test_Y = train_test_split(X,y,test_size=0.2)
# 加载模型
linreg = LinearRegression()
# 拟合数据
linreg.fit(train_X,train_Y)
# 进行预测
y_predict = linreg.predict(test_X)
# 计算均方误差
metrics.mean_squared_error(y_predict,test_Y)
最后的误差约为22.02。还是一个比较高的波动的,后面会采用特征工程与集成学习的方式来优化这个结果,现在只需要有一个简单的印象即可。
分类我们采用另外一个经典的数据集,那就是iris数据集,它的目标是根据花的特征,分出花的类别。
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):
plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()
我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。
我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
举个例子:
# 生成月牙型非凸集
from sklearn import datasets
x, y = datasets.make_moons(n_samples=2000, shuffle=True,
noise=0.05, random_state=None)
for index,c in enumerate(np.unique(y)):
plt.scatter(x[y==c,0],x[y==c,1],s=7)
plt.show()
# 生成符合正态分布的聚类数据
from sklearn import datasets
x, y = datasets.make_blobs(n_samples=5000, n_features=2, centers=3)
for index,c in enumerate(np.unique(y)):
plt.scatter(x[y==c, 0], x[y==c, 1],s=7)
plt.show()
Datawhale 组队学习——集成学习 ↩︎