好气啊,spark运行不了就算了,自己写的程序也是一键砸锅。/(ㄒoㄒ)/~~ 不得不说,调试真好用 一下就看出来,路径加载错误了 算法理论是一方面,实践又是一方面。尊重每一个可以运行的算法,无论它结果怎么样。这个过程真的是没有地方找人说,程序和数学一样精确,对错看结果就行。 还是先补补相关知识吧:
import os os.getcwd() 导入 'c:\\Users\\yunswj\\Desktop\\精通数据科学算法\\DataScienceAlgorithmsinaWeek_Code\\DataScienceAlgorithmsinaWeek_Code' 结果 import pprint
pprint.pprint(os.listdir)
总之是内置的库,用到时候引入就行 其实最想解决的问题是,当你想引入的一个包,不在你的当前文件,或者在上一层目录,或者是在某个文件夹里面,怎么办啊? 大多数的方案是这个,确实有点效果,但我的执行效果不是这样的。 解决模块的问题:
import sys sys.path.append(’需要引用模块的地址') sys.path.append(..) # 这代表添加当前路径的上一级目录 你看 确实是有,但是会引入吗? 这说了,是一个模块 其实是引入了,不过是短暂的引入一次,别的文件不引入就失效了。。。 sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__FILE__)))) 真真的引入应该是这样的 获取主执行文件路径的最佳方法是用sys.argv[0],它可能是一个相对路径; 通过调用 __file__ 属性输出的绝对路径,我们可以很轻易地找到该模块(或包)的源文件。 Python 的扩展模块添加在 lib\site-packages 路径下,它专门用于存放 Python 的扩展模块和包。 . ; d:\python_ module 路径 点的意思是,当前路径读取。分号是分隔路径,然后后面是绝对的路径。 只有以“from 模块名 import *”形式导入的模块,当该模块设有 __all__ 变量时,只能导入该变量指定的成员,未指定的成员是无法导入的。 __all__ 变量仅限于在其它文件中以“from 模块名 import *”的方式引入。也就是说,如果使用以下 2 种方式引入模块,则 __all__ 变量的设置是无效的。 import 模块名 from 模块名 import 成员 每个包的目录下都必须建立一个 __init__.py 的模块,可以是一个空模块,可以写一些初始化代码,其作用就是告诉 Python 要将该目录当成包来处理。 注意,__init__.py 不同于其他模块文件,此模块的模块名不是 __init__,而是它所在的包名。例如,在 settings 包中的 __init__.py 文件,其模块名就是 settings。 包就是一个目录,好好记住这个。 看个例子 http://c.biancheng.net/view/4669.html 这个链接里面有更多的精彩描述 当直接导入指定包时,程序会自动执行该包所对应文件夹下的 __init__.py 文件中的代码。 import string print(dir(string)) ['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace'] import string print([e for e in dir(string) if not e.startswith('_')]) 使用这个代码就会下划线的方法不输出 导入包,实际就是执行的__init__的文件 也就是说__file__就是__init__文件的所在位置 也就是说,没有init的文件,就没有输出 我知道对于屏幕前的你,已经很补耐烦了,可能都没有在看。但是你要想写点东西出来,这些是基础知识中的基础知识了。 在程序的前面,我写了这个图像的风格 import matplotlib.pyplot as plt import numpy as np plt.style.use('ggplot')
# Fixing random state for reproducibility np.random.seed(19680801)
fig, axes = plt.subplots(ncols=2, nrows=2) ax1, ax2, ax3, ax4 = axes.ravel()
# scatter plot (Note: `plt.scatter` doesn't use default colors) x, y = np.random.normal(size=(2, 200)) ax1.plot(x, y, 'o')
# sinusoidal lines with colors from default color cycle L = 2*np.pi x = np.linspace(0, L) ncolors = len(plt.rcParams['axes.prop_cycle']) shift = np.linspace(0, L, ncolors, endpoint=False) for s in shift: ax2.plot(x, np.sin(x + s), '-') ax2.margins(0)
# bar graphs x = np.arange(5) y1, y2 = np.random.randint(1, 25, size=(2, 5)) width = 0.25 ax3.bar(x, y1, width) ax3.bar(x + width, y2, width, color=list(plt.rcParams['axes.prop_cycle'])[2]['color']) ax3.set_xticks(x + width) ax3.set_xticklabels(['a', 'b', 'c', 'd', 'e'])
# circles with colors from default color cycle for i, color in enumerate(plt.rcParams['axes.prop_cycle']): xy = np.random.normal(size=2) ax4.add_patch(plt.Circle(xy, radius=0.3, color=color['color'])) ax4.axis('equal') ax4.margins(0)
plt.show() 出现的图,其实是扁平化的图案 import numpy as np import matplotlib.patches as mpatches # 绘制一个圆形 import matplotlib.pyplot as plt # 相当于matlab的绘图api import matplotlib
matplotlib.style.use('ggplot')
# sys.path.append('.//Common') # 对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append('xxx') # 这个操作是添加搜索目录 # pprint.pprint(sys.path) # 更加好看的打印方式
data_file_name = 'mary_and_temperature_preferences_completed.data' temp_from = 5 temp_to = 30 wind_from = 0 wind_to = 10
# 返回一个包含3个列表的字典。第一个是x坐标。 # 第二个是y坐标,第三个是数值的颜色
def get_x_y_colors(data): dic = {} dic['x'] = [0] * len(data) dic['y'] = [0] * len(data) dic['colors'] = [0] * len(data) for i in range(0, len(data)): dic['x'][i] = data[i][0] dic['y'][i] = data[i][1] dic['colors'][i] = data[i][2] return dic
data = np.loadtxt(open(data_file_name, 'r'), dtype={ 'names': ('temperature', 'wind', 'perception'), 'formats': ('i4', 'i4', 'S4') })
# 将类转换为要在图中显示的颜色。 for i in range(0, len(data)): if data[i][2] == 'cold': data[i][2] = 'blue' elif data[i][2] == 'warm': data[i][2] = 'red' else: data[i][2] = 'gray'
# 将数组转换为可用于绘图功能的格式。 data_processed = get_x_y_colors(data)
# 绘图
plt.title('Mary and temperature preferences') plt.xlabel('temperature in C') plt.ylabel('wind speed in kmph') plt.axis([temp_from, temp_to, wind_from, wind_to]) # Add legends to the graph. blue_patch = mpatches.Patch(color='blue', label='cold') red_patch = mpatches.Patch(color='red', label='warm') plt.legend(handles=[blue_patch, red_patch]) plt.scatter(data_processed['x'], data_processed['y'], c=data_processed['colors'], s=[1400] * len(data)) plt.show()
7 3 cold 6 9 cold 12 1 cold 16 6 cold 16 9 cold 14 4 cold 13 4 cold 19 4 warm 18 4 cold 15 1 cold 5 6 cold 20 7 cold 25 1 warm 22 6 warm 21 6 warm 27 2 warm 26 6 warm 8 5 cold 23 7 warm 5 8 cold 28 5 warm 10 8 cold 9 0 cold 6 7 cold 30 0 warm 29 8 warm 11 5 cold 10 7 cold 16 3 cold 17 7 cold 12 6 cold 8 8 cold 17 2 warm 14 1 cold 13 7 cold 20 9 cold 19 3 warm 18 9 cold 5 7 cold 24 1 warm 20 4 warm 22 3 warm 27 1 warm 8 2 cold 23 10 cold 28 10 cold 9 3 cold 15 5 cold 6 0 cold 11 0 cold 16 0 cold 16 5 cold 14 2 cold 13 10 cold 6 8 cold 25 10 cold 26 1 warm 21 9 cold 9 9 cold 23 9 cold 29 1 warm 7 8 cold 14 8 cold 13 0 cold 12 8 cold 19 8 cold 18 0 warm 17 8 cold 24 8 warm 20 3 warm 25 5 warm 21 2 warm 5 4 cold 27 6 warm 26 2 warm 8 9 cold 23 3 warm 22 9 cold 28 1 warm 9 4 cold 5 1 cold 29 4 warm 10 3 cold 7 2 cold 12 2 cold 11 10 cold 17 6 cold 16 10 cold 14 5 cold 13 3 cold 19 7 cold 18 5 cold 16 4 cold 15 0 cold 15 6 cold 21 8 cold 20 0 warm 26 8 warm 25 0 warm 22 7 warm 21 5 warm 27 5 warm 26 7 warm 8 6 cold 23 6 warm 22 10 cold 28 6 warm 10 9 cold 9 7 cold 6 4 cold 30 1 warm 29 7 warm 11 4 cold 10 4 cold 7 1 cold 12 7 cold 11 9 cold 17 1 warm 15 10 cold 14 6 cold 13 6 cold 20 10 cold 19 2 warm 18 6 cold 24 2 warm 20 5 warm 25 3 warm 22 0 warm 5 5 cold 27 0 warm 8 3 cold 23 5 warm 5 10 cold 10 10 cold 9 2 cold 6 1 cold 30 2 warm 29 10 cold 11 3 cold 16 1 cold 12 4 cold 15 9 cold 14 3 cold 13 9 cold 19 1 warm 7 6 cold 15 7 cold 6 10 cold 9 8 cold 8 0 cold 23 8 warm 30 8 warm 29 0 warm 28 8 warm 6 2 cold 14 9 cold 12 9 cold 18 1 warm 24 9 warm 25 9 warm 25 4 warm 21 1 warm 26 3 warm 8 10 cold 23 2 warm 28 2 warm 27 10 cold 5 0 cold 29 3 warm 10 0 cold 12 3 cold 17 5 cold 30 6 warm 14 10 cold 13 2 cold 30 5 warm 19 6 cold 18 2 warm 17 10 cold 15 3 cold 20 1 warm 26 9 warm 7 7 cold 15 4 cold 21 4 warm 19 9 cold 27 4 warm 26 4 warm 8 7 cold 23 1 warm 24 4 warm 28 7 warm 27 9 warm 9 6 cold 6 5 cold 5 3 cold 29 6 warm 11 7 cold 10 5 cold 7 0 cold 24 7 warm 12 0 cold 11 8 cold 17 0 warm 16 8 cold 14 7 cold 13 5 cold 19 5 warm 18 7 cold 24 3 warm 21 10 cold 20 6 warm 26 10 cold 25 2 warm 22 1 warm 21 7 cold 27 3 warm 8 4 cold 23 4 warm 5 9 cold 28 4 warm 20 8 cold 9 1 cold 6 6 cold 30 3 warm 29 9 warm 11 2 cold 10 6 cold 16 2 cold 12 5 cold 17 3 warm 15 8 cold 14 0 cold 13 8 cold 30 4 warm 19 0 warm 18 8 cold 25 8 warm 24 0 warm 7 4 cold 22 2 warm 8 1 cold 30 9 warm 28 9 warm 6 3 cold 11 1 cold 16 7 cold 7 10 cold 24 6 warm 12 10 cold 19 10 cold 24 10 cold 21 0 warm 26 0 warm 30 7 warm 28 3 warm 9 10 cold 30 10 cold 29 2 warm 10 1 cold 25 7 warm 18 10 cold 17 4 cold 7 9 cold 13 1 cold 24 5 warm 18 3 warm 17 9 cold 15 2 cold 22 4 warm 20 2 warm 25 6 warm 22 5 warm 21 3 warm 27 7 warm 26 5 warm 7 5 cold 23 0 warm 22 8 warm 28 0 warm 27 8 warm 9 5 cold 5 2 cold 29 5 warm 11 6 cold 10 2 cold 本来是想写K近邻算法,可惜有错误。我又走神了,这是对代码的可视化部分 |
|