import MySQLdb try: conn=MySQLdb.connect(host='localhost',user='roo...
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站制作、仙桃网络推广、小程序定制开发、仙桃网络营销、仙桃企业策划、仙桃品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供仙桃建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
答:试试这个fetchone函数 conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306) cur=conn.cursor() cur.execute('select * from user') data = cur.fetchone() print "Database : %s " % data conn.commit() cur.
Python3中使用:print()函数
用法(从IDLE帮助上复制):
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
value即你要输出的值(大多数类型均可),sep是这多个值用什么分割(默认为空格),end是这个输出的末尾是什么(默认是换行)。
以下为python代码,由于训练数据比较少,这边使用了批处理梯度下降法,没有使用增量梯度下降法。
##author:lijiayan##data:2016/10/27
##name:logReg.pyfrom numpy import *import matplotlib.pyplot as pltdef loadData(filename):
data = loadtxt(filename)
m,n = data.shape print 'the number of examples:',m print 'the number of features:',n-1 x = data[:,0:n-1]
y = data[:,n-1:n] return x,y#the sigmoid functiondef sigmoid(z): return 1.0 / (1 + exp(-z))#the cost functiondef costfunction(y,h):
y = array(y)
h = array(h)
J = sum(y*log(h))+sum((1-y)*log(1-h)) return J# the batch gradient descent algrithmdef gradescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.0000025 # learning rate maxcycle = 4000 theta = zeros((n+1,1)) #initial theta J = [] for i in range(maxcycle):
h = sigmoid(x*theta)
theta = theta + a * (x.T)*(y-h)
cost = costfunction(y,h)
J.append(cost)
plt.plot(J)
plt.show() return theta,cost#the stochastic gradient descent (m should be large,if you want the result is good)def stocGraddescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.01 # learning rate theta = ones((n+1,1)) #initial theta J = [] for i in range(m):
h = sigmoid(x[i]*theta)
theta = theta + a * x[i].transpose()*(y[i]-h)
cost = costfunction(y,h)
J.append(cost)
plt.plot(J)
plt.show() return theta,cost#plot the decision boundarydef plotbestfit(x,y,theta):
plt.plot(x[:,0:1][where(y==1)],x[:,1:2][where(y==1)],'ro')
plt.plot(x[:,0:1][where(y!=1)],x[:,1:2][where(y!=1)],'bx')
x1= arange(-4,4,0.1)
x2 =(-float(theta[0])-float(theta[1])*x1) /float(theta[2])
plt.plot(x1,x2)
plt.xlabel('x1')
plt.ylabel(('x2'))
plt.show()def classifyVector(inX,theta):
prob = sigmoid((inX*theta).sum(1)) return where(prob = 0.5, 1, 0)def accuracy(x, y, theta):
m = shape(y)[0]
x = c_[ones(m),x]
y_p = classifyVector(x,theta)
accuracy = sum(y_p==y)/float(m) return accuracy
调用上面代码:
from logReg import *
x,y = loadData("horseColicTraining.txt")
theta,cost = gradescent(x,y)print 'J:',cost
ac_train = accuracy(x, y, theta)print 'accuracy of the training examples:', ac_train
x_test,y_test = loadData('horseColicTest.txt')
ac_test = accuracy(x_test, y_test, theta)print 'accuracy of the test examples:', ac_test
学习速率=0.0000025,迭代次数=4000时的结果:
似然函数走势(J = sum(y*log(h))+sum((1-y)*log(1-h))),似然函数是求最大值,一般是要稳定了才算最好。
下图为计算结果,可以看到训练集的准确率为73%,测试集的准确率为78%。
这个时候,我去看了一下数据集,发现没个特征的数量级不一致,于是我想到要进行归一化处理:
归一化处理句修改列loadData(filename)函数:
def loadData(filename):
data = loadtxt(filename)
m,n = data.shape print 'the number of examples:',m print 'the number of features:',n-1 x = data[:,0:n-1]
max = x.max(0)
min = x.min(0)
x = (x - min)/((max-min)*1.0) #scaling y = data[:,n-1:n] return x,y
在没有归一化的时候,我的学习速率取了0.0000025(加大就会震荡,因为有些特征的值很大,学习速率取的稍大,波动就很大),由于学习速率小,迭代了4000次也没有完全稳定。现在当把特征归一化后(所有特征的值都在0~1之间),这样学习速率可以加大,迭代次数就可以大大减少,以下是学习速率=0.005,迭代次数=500的结果:
此时的训练集的准确率为72%,测试集的准确率为73%
从上面这个例子,我们可以看到对特征进行归一化操作的重要性。
print函数是python语言中的一个输出函数,可以输出以下几种内容
1. 字符串和数值类型 可以直接输出
print( 1)
1
print( "Hello World")
Hello World
2.变量
无论什么类型,数值,布尔,列表,字典...都可以直接输出
x = 12
print(x)
12
s = 'Hello'
print(s)
Hello
L = [ 1, 2, 'a']
print(L)
[ 1, 2, 'a']
t = ( 1, 2, 'a')
print(t)
( 1, 2, 'a')
d = { 'a': 1, 'b': 2}
print(d)
{ 'a': 1, 'b': 2}
3.格式化输出
类似于C中的 printf
s
'Hello'
x = len(s)
print( "The length of %s is %d" % (s,x) )
The length of Hello is 5
【注意】
Python2和3的print函数格式不同,3要求加括号(print())
缩进最好使用4个空格
线性回归是机器学习算法中最简单的算法之一,它是监督学习的一种算法,主要思想是在给定训练集上学习得到一个线性函数,在损失函数的约束下,求解相关系数,最终在测试集上测试模型的回归效果。
也就是说 LinearRegression 模型会构造一个线性回归公式
y' = w^T x + b
,其中 w 和 x 均为向量,w 就是系数,截距是 b,得分是根据真实的 y 值和预测值 y' 计算得到的。